The Thomas Aquinas ferry was carrying 870 passengers and crew when it collided with a cargo ship on Friday night in calm waters near the port of Cebu, the Philippines' second biggest city, authorities said.
While 572 people had been rescued by Saturday morning, 274 were still unaccounted for and 24 bodies had been retrieved, Rear Admiral Luis Tuason, vice commandant of the Philippine coastguard, told AFP.
The accident occurred in the mouth of a narrow strait leading into the port between two and three kilometres (1.2-1.8 miles) from shore at 9.00pm (1300 GMT), authorities said.
One survivor, Maribel Manalo, 23, recounted to her brother the horror of suddenly being plunged into the cold water in darkness, and emerging from the chaos without her mother.
"She said there was a banging noise then the boat suddenly started sinking," the brother, Arvin Manalo, told AFP.
"They quickly strapped on life jackets and then jumped into the dark sea. She said they felt like they were pulled under.
"My sister said she pushed our mother up, but they got separated. My sister was rescued. My sister knows how to swim, but my mother does not."
He said their mother, 56, remained missing.
Fifty-eight babies were among the passengers on board the ferry, according to the coastguard, and it was unclear how many of them survived.
Tuason told DZMM radio just after sunrise there were hopes that some of the missing had been picked up by fishermen who had joined in the rescue effort, or were still at sea.
"We are planning to deploy airforce choppers so there can be an aerial survey so we can find those still on the life rafts," he said.
But Tuason said he expected the death toll would climb substantially.
"Yes, that will still be a big number," he said.
Rachel Capuno, a security officer for the ferry's owners, told Cebu radio station DYSS that the vessel was sailing into port when it collided head-on with the cargo ship.
"The impact was very strong," she said, adding that the ferry sank within 30 minutes of the collision.
Cebu coastguard commander Weniel Azcuna told reporters the cargo ship, Sulpicio Express 7, had 36 crew members on board, but it did not sink.
Tuason told DZMM radio that, while the cause of the collision had yet to be determined, it appeared one of the vessels had violated rules on which lanes ships should use when travelling in and out of the port.
"A big part of the investigation is how the captains manoeuvred the ships," he said.
Tuason said the captain of the Thomas Aquinas was among those rescued, and it appeared the passenger ferry could have been in the wrong lane.
"He is now with the Philippine coastguard because we have questions that he needs to clarify before we start the formal investigation," Tuason said.
Coastguard public affairs officer Villages said the Thomas Aquinas was a "roll-on, roll-off" ferry that allows vehicles to be driven aboard and is commonly used in the Philippines.
Ferries are one of the main modes of transport across the archipelago of more than 7,100 islands, particularly for the millions of people too poor to fly.
But sea accidents are common, with poor safety standards, lax enforcement and overloading typically to blame.
The world's deadliest peacetime maritime disaster occurred near the capital, Manila, in 1987 when a ferry laden with Christmas holidaymakers collided with a small oil tanker, killing more than 4,300 people.
In 2008, a huge ferry capsized during a typhoon off the central island of Sibuyan, leaving almost 800 dead.
In June, seven people died when another roll-on, roll-off ferry mysteriously sank in calm waters in the central Philippines.