"Human error" was responsible for the accident, which occurred at Germiston, east of Johannesburg, the Railway Safety Regulator (RSR) of South Africa said.
It said a train was authorised to enter the station while another one was still there, "which subsequently resulted in a rear-end collision."
A total of 226 people were slightly or moderately injured, the RSR said.
On Thursday, a passenger train travelling from Port Elizabeth to Johannesburg smashed into a lorry at a level crossing near Kroonstad in central Free State and burst into flames, killing four children and 15 other people.
South African police have launched a manslaughter investigation, with the lorry driver central to the probe. The RSR said the man was not drunk at the time.
The main opposition Democratic Alliance party said "the two accidents are emblematic of poor investment" in rail safety.
"In the 2016/17 financial year, 495 fatalities and 2,079 injuries were recorded on South Africa's rail network," said shadow transport minister Manny De Freitas.
But Transport Minister Joe Maswanganyi defended the government's record, saying the rail network was badly neglected during apartheid rule which ended in 1994.
A budget of about 5.6 billion rand ($452 million, 380 million euros) has been set aside for signalling modernisation since 2015 to 2018, he said.
"Our rail network has previously been characterised by years of disinvestment by the apartheid regime," he said.
The ruling African National Congress often points to the apartheid legacy when attacked on its performance on key issues such as poverty, joblessness and educational standards.