The ferry, MV Thomas Aquinas, began sinking after hitting the cargo vessel on Friday evening near the central city of Cebu, officials said.
Coastguard and naval vessels were joined by local fishing boats in the rescue effort, which is continuing.
With so many still unaccounted for, it is feared the death toll could rise.
The ferry, carrying 692 people, was sailing into the port at Cebu – the country’s second biggest city – when it collided with the cargo ship travelling the other way at about 21:00 local time (01:00 GMT).
“The impact was very strong,” Rachel Capuno, a spokesperson for the owners of the ferry, told local radio.
She said the ship sank within 30 minutes of the collision, the AFP reports.
One survivor has been quoted as saying he saw bodies floating in the sea.
“It seems some people were not able to get out,” passenger Jerwin Agudong told radio station DZBB. “I pity the children. We saw dead bodies on the side, and some being rescued.”
Maritime accidents are common in the Philippine archipelago because of tropical weather, badly maintained passenger boats and weak enforcement of safety regulations.
The world’s worst maritime disaster in peacetime occurred in the Philippines in December 1987. More than 4,000 people died when the Dona Paz ferry collided with a tanker.