Three carriages were torn apart by the violence of the impact after the two trains hit each other head-on as they traveled down the same stretch of track that links the small towns of Corato and Andria in the region of Puglia.
"Unfortunately the death toll has risen to 20," said Giuseppe Corrado, deputy head of the local province. He appealed for blood donors to go to local hospitals, with at least 30 people hurt in the crash.
There was no immediate indication of what had caused one of Italy's worst train disasters in recent years, but the government promised a full and swift investigation.
"Tears and grief for the victims and their families, but also a lot of anger. We demand clarity over what happened in Puglia this morning," Prime Minister Matteo Renzi said on Twitter. He was expected in the region later on Tuesday.
The crash happened at around 11.30 a.m. (5:40 a.m. ET) on a fiercely hot summer's day.
Both trains were made up of four carriages. The front carriages on each were pulverized as they slammed into one another. Sky Italia TV quoted sources as saying one of the drivers had died, with no word yet about the fate of the other one.
"It looks like there has been a plane crash," said the mayor of Corato, Massimo Mazzilli.
Rescue services parked their ambulances and fire trucks among the olive trees and set up a field hospital to treat the injured. The sound of crickets rang out as the first bodies were extracted from the site in metal caskets.
"I dug through the wreckage and managed to save my husband. But I saw people cut to pieces," said an elderly woman standing alongside her husband, whose head was swathed in bandages. Another survivor said he was thrown to the floor by the impact. "When I got up, I saw hellish scenes around me."
Kicking up clouds of dust, helicopters landed in a nearby field to pick up the most seriously injured.
It was not clear how many people had been on the trains at the time of the collision. By mid-afternoon a giant crane had arrived at the scene to start lifting the smashed carriages to see if any bodies were still trapped under the wreckage.
The stretch of track is operated by a small, private rail company Ferrotramviaria. Italian media said the European Union had earmarked funds to build a second track along the route but that the work had been delayed.
The last major rail disaster in Italy was in 2009 when a freight train derailed in Viareggio, in the center of the country, and more than 30 people living close to the tracks died in the subsequent fire.