The collision happened near Pretoria when a passenger train ran into a stationary train from behind on the same track, the South African website News 24 reported.
"The metal was torn and crumpled from the force of the two trains colliding," said Vanessa Jackson, a spokeswoman for ER24, South African's emergency medical service.
About 300 people were injured, two of whom were in critical condition and 10 in serious condition.
"After approximately two and a half hours on scene, it appears that most of the more seriously injured patients have been removed to hospital and only those that have sustained relatively minor injuries in the incident will be transported shortly," Jackson said.
Investigators said the collision was caused by theft of various cables for the copper they contain.
"It's time we recognize cable theft as attempted murder. People could have died today," Metrorail said at a press conference.