Italy, which has vowed a tough line on immigration, took in more than 500 migrants on Sunday as two charity rescue ships were allowed to dock at ports in the south of the country after several days at sea in bad weather.
The Geo Barents ship, operated by the Doctors without Borders (MSF) charity and which had 248 migrants aboard, arrived in Salerno in the southwestern region of Campania, MSF said.
On the other side of the country, the Humanity 1, another rescue vessel run by the charity SOS Humanity, docked in the port city of Bari after the Italian authorities agreed to grant it permission.
The journey had been very tough and the ship had faced three-metre high waves and strong winds, SOS Humanity said in a tweet, confirming its arrival with 261 migrants on board.
How to respond to requests for help from the charity boats that pick up migrants in the Mediterranean is a challenge for Italy's new right-wing government led by Prime Minister Giorgia Meloni.
Tensions flared with neighbour France last month after the French took in a boat that had been turned away by Italy.
Italian interior ministry sources said the decision to allow the two ships to dock was based on the poor weather conditions and the risks faced by those on board, rather than representing a change of policy.
It accuses the charity ships of making it easier for economic migrants to reach Italy and playing into the hands of people traffickers.
The ministry was working on new regulations to protect Italy's borders and halt the people smugglers, the sources said.
A 14-year-old boy, who was travelling alone, had been airlifted from the Geo Barents to Sicily after suffering acute abdominal pain, MSF said on Friday.
On Wednesday, a baby was born on the same vessel and later flown with his mother and three siblings to Italy.