The people aboard the Sea Watch and Sea Eye, which are both operated by German NGOs, will land in Malta later on Wednesday before being transferred to their host countries.
The Sea-Watch 3 ship, which is run by a German humanitarian group, picked up 32 people from a boat off the coast of Libya on December 22.
They have both been sailing back in forth in Maltese waters for weeks after Italy, Malta and other European Union countries refused to offer them a port of safety.
He said that of the total of 298 migrants, 176 would be sent to Germany, France, Portugal, Ireland, Romania, Luxembourg, the Netherlands and Italy.
Another 78 will be allowed to stay in Malta, while 44 Bangladeshi migrants will be repatriated.
"After 19 days at sea, our guests finally have a safe haven", Sea-Watch tweeted.
Amnesty International's Southern Europe researcher Elisa De Pieri said the time taken to reach a decision on the migrants' fate was "shameful".
Migrants rescued by ships have frequently been left in limbo since Italy's populist anti-immigration government began turning them away last summer.
"It is a testament to state failure; politics should never be played at the cost of people in need."
The deal calls for 300 migrants to be redistributed between eight countries, including Ireland.
The disembarkation marks the end of an nearly three-week ordeal, which saw European member states refuse the disembarkation of the rescued people until a relocation agreement was reached.
Salvini told reporters during a visit to Poland Wednesday he "absolutely" opposes new migrant arrivals in Italy, clashing with his own premier on the issue.
The migrants involved in the EU-brokered deals are part of waves of people fleeing poverty and conflict in Africa, Asia or the Middle East, who have risked their lives aboard smugglers' boats to try to reach European shores in recent years.
"To give in to pressure and threats from Europe and NGOs is a sign of weakness that Italians don't deserve", he added.