Flavio Di Giacomo of the International Organization for Migration (IOM) told Italian state TV that "unfortunately about 120" migrants were reported by survivors to have been on the overloaded smugglers' dinghy when it was launched from Libyan shores on Thursday evening.
"After a few hours, it began sinking and people began drowning," Di Giacomo said.
Among the missing are 10 women and two children, including a two-month-old baby, he said. Survivors indicated their fellow migrants came from Nigeria, Ivory Coast, Gambia and Sudan, Di Giacomo said.
Italian President Sergio Mattarella, who has urged that the government show more compassion for migrants, expressed his "deep sorrow for the tragedy that has taken place in the Mediterranean."
Let our news meet your inbox. The news and stories that matters, delivered weekday mornings.
Premier Giuseppe Conte told reporters he was "shocked" at the reports of the sinking and vowed that Italy would continue to combat human traffickers.
Italy's populist government has banned private rescue boats from bringing migrants to Italian shores. Together with Malta, Italy has also launched probes of the rescue groups themselves, claiming their operations might facilitate trafficking.
The three survivors of the sinking were plucked to safety by an Italian navy helicopter on Friday afternoon, the navy said.
The Italian navy said when its patrol plane first spotted the sinking dinghy it had about 20 persons aboard. The plane's crew launched two life rafts near the dinghy, which inflated, and a navy destroyer sent a helicopter to the scene.
That helicopter rescued the survivors, two from a life raft and one from the water, the navy said, adding that all had hypothermia.
They were flown to Lampedusa, an Italian island near Sicily, and treated in a hospital, Di Giacomo said.
Many migrants cannot afford to pay for life vests, an extra cost when boarding a smuggler's boat in Libya. The survivors said the migrants aboard the dinghy didn't have any.
It wasn't immediately clear exactly how many migrants might have died before the navy plane spotted the sinking dinghy.
The Italian Coast Guard says Libya asked a nearby cargo ship to search for survivors but the ship reported it found no one.
Libyan navy spokesman Ayoub Gassim said one of its boats was sent Friday to the scene but it "had a mechanical issue and we had to call it back." The official said 50 migrants were believed to have been aboard the dinghy when it set sail.
According to the IOM, at least 2,297 people died at sea or went missing trying to reach Europe in 2018. In all, 116,959 migrants reached Europe by sea routes last year, it says.
The U.N. refugee agency UNHCR, said Saturday it was "appalled" at the news of the latest migrant deaths in the Mediterranean. In a statement from its Geneva headquarters, it said in addition to those missing off Libya, 53 people died in recent days in the western Mediterranean, where one survivor was rescued by a fishing boat after being stranded for more than 24 hours at sea.
"We cannot turn a blind eye to the high numbers of people dying on Europe's doorstep," said U.N. High Commissioner for Refugees Filippo Grandi.
Italy has trained and equipped the Libyan coast guard so it can intercept and rescue more migrant boats closer to their shores. But U.N. refugee officials and rights advocates say the migrants rescued by the Libyans are returned to dangerous, overcrowded detention facilities, where detainees face insufficient rations, rape, beatings and torture.