"What we do know is that one vehicle rear-ended the other," said Russel Meiring, a spokesman for ER24, a private emergency service.
In dark, cold conditions, emergency workers carried badly injured people to dozens of waiting ambulances as shocked passengers sat on the ground and were treated for minor injuries.
Some passengers were given medical care inside the wrecked carriages before being lifted down a steep embankment on stretchers.
The crash happened at the height of the evening rush hour when the trains were packed with people travelling from Johannesburg city centre to the township of Soweto.
"The one train had stopped because of a signal when another came from behind us hooting and smashed into its back," a commuter told the African News Agency.
The cause of the accident was unknown and authorities were still gathering information about the collision, Metrorail spokeswoman Lillian Mofokeng said.
"Our priority right now is just to attend to the injured and then arrange alternative transport," she said.
About 100 passengers who were uninjured were taken home in buses, said Mofokeng.
In April, two passenger trains collided south of Johannesburg, killing the conductor of one of the trains and injuring 241 people.
- AP, AAP