Maltese Prime Minister Joseph Muscat announced the move after agreeing a deal with the European Union, which also covers some 250 migrants already in the country.
The German humanitarian vessel Sea-Watch 3 rescued 32 people near Libya on 22 December and its sister ship, Sea-Eye, collected 17 more on 29 December. They have spent several days off the coast of Malta.
"An ad hoc agreement has been reached," said Muscat. "Of the 249 migrants in Malta and 49 on the boats, 220 will go to other EU states or back to their country of origin."
The migrants will go to eight countries including France, Germany, Portugal and the Netherlands.
Around a dozen countries had said they were prepared to take the 49 people off the boats but Malta insisted on a deal for all 298.
"Malta has never closed its doors and will always remain a haven," said Muscat. "We simply want everyone to go along with the international laws.
"We want to send out a strong signal that this issue must be shared because it is a Europe-wide problem."
Evangelical calls for unity
The call has been shared by Italy's protestant community, with evangelicals offering to take in some of the migrants.
The head of the Federation of Evangelical Churches in Italy (FCEI), Luca Maria Negro, said in a press release, shortly after Malta's announcement: "[FCEI] has told the Interior Minister we are available to welcome some of the refugees from Sea-Watch who are arriving in our country. From our experience, we know that these events could be the basis for lovely stories of integration.
"As protestant Italians, we have supported the rescues on the open sea with Sea-Watch and Open Arms. It is important to underline that this is the responsibility of European countries. This is the best way to deal with this migratory phenomenon."