The force of the impact crumpled carriages and sent debris flying into an olive grove that flanked the single stretch of track in countryside between the towns of Corato and Andria.
Firemen worked in fierce summer heat after the crash, which happened at around 11.30 a.m. (5:30 a.m. ET), picking through the wreckage and shattered carriages in search of other victims.
There was no immediate indication of what had caused the two trains to be traveling toward each other on the same line and the Transport Ministry said it was dispatching two investigators to the region of Puglia to look into the disaster.
"We won't stop until we get a clear explanation over what happened," Prime Minister Matteo Renzi told reporters, cutting short a visit to Milan in northern Italy to return to Rome. He was due to travel to Puglia later in the day.
The trains each had four carriages. A photograph released by the fire brigade showed that three carriages had disintegrated under the impact, suggesting at least one of the trains had been traveling at high speed.
The stretch of track is operated by regional rail company Ferrotramviaria. It was not clear how many people had been on the trains at the time of the collision.