The eight-hour journey to buy Christmas food and other supplies turned into the country's latest sea accident after the boat flipped over just about half a mile (kilometer) from its destination in Aparri town in northeastern Cagayan province, police said.
Senior Inspector Alex de los Santos said some of the nearly 100 passengers jumped into the chilly water after waves broke the ferry's bamboo outrigger, causing it to bob wildly.
He said coast guard and navy vessels, backed by air force helicopters, were searching for 33 people still missing, but bad weather was hampering the effort.
"They panicked and grabbed anything like water containers that will keep them afloat then jumped off the boat," de los Santos told The Associated Press by telephone.
He said most of the 46 survivors swam to shore in Aparri, where police and villagers found them shivering close to midnight.
The dead - including a 1-year-old boy and a town councilor - were taken to funeral parlors, where relatives gathered to identify them. No one claimed the boy's body.
"There were no relatives. Most probably his parents perished with him," de los Santos said.
Coast guard chief Vice Adm. Wilfredo Tamayo said the ferry was authorized to carry only 50 people. He said criminal charges will be filed against the owner and surviving crew members of the 28-ton Maejan.
Hours before the ferry capsized, three children fell into the sea as the vessel was lashed by huge waves, Calayan Mayor Joseph Llopis said. Two of the children were plucked out alive, but it was not clear if they survived the capsizing, said Llopis, who lost 10 of his relatives in the disaster.
Many of the passengers from his town of 17,000 people were traveling to Aparri, about 270 miles (430 kilometers) north of Manila, to buy food and other goods ahead of Christmas, Llopis said.
"There'll be no festive mood," Llopis told the AP. "Many of the dead were breadwinners."
Tropical storms, badly maintained boats and weak enforcement of safety regulations are often the cause of sea accidents in the sprawling Philippine archipelago.
The state weather bureau has warned of an approaching storm from the Pacific with winds of up to 60 miles (95 kilometers) per hour. But Tropical Storm Dolphin was still away from the eastern Philippines and no alert was issued for ships to stay in port.
Last month, a cargo ship sank in rough seas north of Cagayan, and passing vessels plucked 16 of 20 people from shark-infested waters. Weeks earlier, separate storms capsized two passenger boats in the central Philippines, drowning more than 50 people.
Associated Press writer Hrvoje Hranjski contributed to this report.