At least 25 people died and dozens were injured when two passenger trains collided head-on at high speed in southern Italy.

The two trains hit each other while travelling down the same stretch of track linking the small towns of Corato and Andria in the southeastern Puglia region.

Three carriages were torn apart by the violence of the impact.

Rescue operators raised the death toll to 25 this evening after a day of rescue operations.

They warned that the toll could climb higher as some of the 50 injured were in serious condition.

Authorities urged blood donors to go to local hospitals.

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.

"We will remain at the side of the people of Puglia in this moment of great pain and desperation," he later said.

The transport minister is to report to parliament on the crash tomorrow.

The incident happened at around 11.30am local time on a fiercely hot summer's day.

Both trains were comprised of four carriages. The front carriages on each were pulverised as they slammed into one another.

Sky Italia TV said one of the drivers had died, with no word yet about the fate of the other one.

Rescue services parked their ambulances and fire trucks among the olive trees and set up a field hospital to treat the 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 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 centre of the country, and more than 30 people living close to the tracks died in the subsequent fire.