Emergency services worked through the night to extract people from the wreckage of smashed carriages thrown across a single track into olive groves near the town of Andria, in what one witness described as an "apocalyptic scene".
Twenty-seven people, including one of the train drivers, were confirmed to have died, as of shortly after midnight. More than 50 are injured.
As of 7am on Wednesday no further bodies had been recovered, Ansa reported, adding that rescuers were first working to remove pieces of the crashed carriages. Sniffer dogs are also being used to find bodies.
The bodies of a mother and her daughter were reportedly found wrapped in eachother's arms.
Bari's Policlinico hospital will begin work on identifying the victims from around 9am, Ansa said.
The trains collided on a single track line between the towns of Corato and Andria.
The cause of the crash is yet to be ascertained but there is speculation that is was due to either a "technical glitch" or "human error". The black box of the train coming from the city of Bari has been found in tact, Ansa reported on Wednesday morning.
On Tuesday evening, coffins were taken to the site near the city of Bari to carry away the first of the dead as 200 rescue workers sifted through the wreckage in temperatures reaching 40 degrees Celsius (104 degrees Fahrenheit).
"I saw dead people, others who were begging for help, people crying. The worst scene of my life," one policeman told journalists.
The site of the crash , in Puglia on Italy's heel. Photo: Google Maps
"Some of the carriages are utterly crumpled and the rescue services are pulling people out, many are wounded," Riccardo Zingaro, head of traffic police in Andria, told journalists on Tuesday.
The high-speed collision happened on a slight bend in the track in open countryside and flung the front carriages of both trains into olive groves bordering the line, slinging bits of metal from the wreckage.
Investigators said at least one of the trains had been travelling very fast, and it was possible the collision was caused by human error.
One of the four-carriage trains was supposed to have waited at a station for a green light before heading down the track between the towns of Corato and Andria.
"This is a disaster like a plane crash," Corato mayor Massimo Mazzilli said on Facebook.
Rescue workers look for passengers among the wreck. Photo: Vigili del Fuoco
Prime Minister Matteo Renzi quickly travelled to the scene on Tuesday after interrupting a speech in Milan express his grief for the victims of the disaster.
“We won't rest until we understand how this happened,” he said.
Investigators are looking into the cause of the disaster, but say it might have been down to human error.
“We must swiftly discover how this happened and determine where the responsibility lies and any eventual shortcomings.”