The explosion went off on Sunday while passengers were boarding the Dona Ramona ferry at the town of Lamitan on Basilan island, sparking scenes of chaos.
The blast was caused by a home-made bomb left on a pile of liquefied petroleum gas tanks, the military said.
The explosion ripped through the back section of the Dona Ramona ferry as it was about to depart from the port of Lamitan in the southern island of Basilan, a hotbed of Muslim rebellion.
"This was a concealed explosive device that was left on piles of LPG (liquefied petroleum gas) tanks," said Basilan military chief Brigadier General Raymundo Ferrer. "This was purely to sow terror."
The number of injured has risen to 30, including children and two soldiers guarding the area, said armed forces spokesman Lieutenant Colonel Buenaventura Pascual. Provincial spokesman Cris Puno said the wounded received severe burns.
Ferrer would not say if the Muslim Abu Sayyaf group was behind the attack, although other security officials say the attack had the trademark of the al-Qaida-linked group.
The area was "in chaos", provincial spokesman Cris Puno said, with those wounded suffering severe burns caused by the blast. A thick scent of gunpowder hung in the air, he added.
"This was a concealed explosive device that was left on piles of LPG (liquefied petroleum gas) tanks. This was purely to sow terror"
Basilan military chief
"There were children among those wounded," he said, declining to speculate when asked who could be behind the latest bombing.
US aid money
The blast at Lamitan port - built using US aid money and opened by the American charge d'affaires Daryl Johnson just days ago - came after Muslim rebels injured 26 people in a bomb attack on a parked vehicle on 26 August.
Security forces have been on heightened alert for more bombings after three suspects in the Zamboanga blast from the Abu Sayyaf group, a small gang of Islamic rebels which once enjoyed support from al-Qaida, were freed on bail.
The Abu Sayyaf is also blamed for firebombing a passenger ferry off Manila Bay last year, killing over 100 people in the Philippines' worst terrorist attack.