As reported by Censor.NET citing euronews, many victims have been sent to local hospitals amid fears that the death toll could rise.
The first pictures of the scene show that the crash happened on a single stretch of track in the countryside as the trains were travelling in opposite directions reportedly between the towns of Corato and Andria, west of Bari.
Emergency services have been trying to free people from the wreckage.
Italian Prime Minister Matteo Renzi interrupted a trip to Milan and returned to Rome, describing the crash as a "moment of tears".
It's not known what caused the accident that happened at around 11:30 a.m. on Tuesday morning local time, apparently in good weather.
The last major rail disaster in Italy was in 2009, when a freight train derailed in Viareggio, in the center of the country. More than 30 people living close to the tracks were killed in a fire caused by the crash.