Hundreds of migrants fleeing unrest and conflict in Libya and across North Africa are believed to have died since the beginning of the year in desperate journeys across the Mediterranean.
The 15-metre boat was carrying 296 people, including women and children, according to the Coast Guard captain, Antonio Morana.
The ANSA news agency claimed that the hold also served as an engine room.
As the air became unbreathable from exhaust fumes, migrants tried to exit but the boat was too packed for those standing above to move aside, ANSA said.
The news agency said they may have died from asphyxiation.
The officials found the corpses — all young men — after boarding the boat just a few kilometres off the island of Lampedusa, which is closer to North Africa than the Italian mainland.
The bodies were put in green bags and lined up on Lampedusa’s deck, before being moved to an immigrant shelter on the island.
Survivors were taken ashore and also moved to the immigrant shelter.
One photo published by Italian newspapers showed the lifeless body of a man being pulled out of the boat by rescuers.
Morana said all the victims were believed to be of sub-Saharan origin.
According to the survivors, the boat had set sail from Libya two days ago, he said.
Dozens of the boats attempting the crossing to Italy are filled with sub-Saharan Africans who were working in Libya, then lost their jobs and feared for their lives as conflict erupted between Muammar Gaddafi and the rebels trying to oust him.
In April, a boat believed to be carrying up to 300 migrants from Libya capsized, leaving 250 people presumed dead.
Separately, scuffles broke out in the southern city of Bari between immigrants held at a local centre and police, leaving scores injured. Footage on the RAI state broadcaster showed the immigrants occupying railway stations and hurling objects at police vans.
ANSA said the immigrants had been at the centre for several months and were protesting lack of progress in processing their requests for asylum.