Italian coastguard control said the overloaded rubber dinghy sank close to the island of Saseno, between Albania and Greece.
The boat carried at least 32 people and the survivors of the mishap have been taken to Albanian ports.
"Among the dead there may well have been two babies. We do not know exactly yet, because the terrible conditions meant we could not go on board the boat," the coastguard official said.
"The bodies were all piled up, one on top of the other, and the coastguards could not count them," he said.
The dinghy left Albania on Friday in high seas. Italian, Greek and Albanian coastguards responded to an SOS call made to an Albanian television station by mobile phone, but took 12 hours to find the dinghy because of stormy weather.
Illegal immigration to Italy has risen in recent months, most migrants coming from poor north and central African countries and Eastern Europe.
As illegal immigrants undertake risky journeys, mostly by sea, accidents are fairly common and scores have drowned in recent months.