Police said the jeepney crashed at 3.30am (7pm GMT on 24 December) into a larger bus in the town of Agoo, La Union, 125 miles north of the capital Manila.
Chief Inspector Roy Villanueva said the smaller vehicle had veered out of its lane to overtake.
The driver and 19 passengers were "dead on arrival", he said.
Another 10 passengers on the bus were injured and taken to the local hospital.
The jeepney's engine came out of the front of the vehicle, which was largely crushed. Sky more