Four hundred people were taken to hospital, with 70 in a ritical condition, Xinhua news agency said, suggesting the death toll could rise further.
Xinhua said authorities had determined the crash was caused by “human error”, but did not elaborate.
One train was en route from Beijing to the seaside resort of Qingdao when the accident happened in Zibo, Shandong province. The second train was from the resort of Yantai, in Shandong.
Both were likely operating at full speed at the time of the accident, the worst in China since 1997, a cargo worker said.
The accident, which happened at a bend, caused the carriages to topple into a ditch, Xinhua reported, adding that bloodstained sheets and broken Thermos flasks littered the ground.