Italian police and port authorities estimated that between 45 and 60 people had been on board the vessel when the accident happened at around 7pm local time.
A defence ministry statement said the small Albanian coastal patrol boat, with some 30 civilians on deck and an unspecified number of people below, collided with the corvette Sibilla, which had been trying to prevent it from entering Italian waters.
"In the course of this manoeuvre, the patrol boat carried out a sharp turn to the right, coming to intersect the path of the Sibilla," the ministry statement said. The Italian ship stopped and threw its motors into reverse, "but it could not avoid the collision that caused the overturning of the Albanian vessel".
Italian navy ships, a coastguard helicopter and other vessels converged on the scene to assist in the rescue, 40 miles off the southern Italian port of Brindisi in the Strait of Otranto. At least 30 people were rescued from the waves having spent several hours in the water after the boat went down, according to one helper.
Helicopters with spotlights, two navy corvettes and an aircraft were dispatched to look for more survivors but darkness and rough seas hindered them. Hospitals on the mainland were put on full alert to receive casualties.
This was the first incident involving fatalities since the exodus of Albanian refugees began on 13 March.
More than 13,000 Albanians have flooded into Italy in the past two weeks on old and rusting boats, escaping the violence in their impoverished country which began after armed rebels took control of towns in the south.
Italy, concerned that many refugees were simply people looking for a better life rather than fleeing danger, has said it will grant temporary sanctuary to genuine refugees but repatriate "undesirables". More than 1,000 Albanians have been turned back.
Hope for aid, page 19Reuse content