Officials said the truck driver allegedly tried to cross the tracks just ahead of the oncoming train, part of which burst into flames after the collision, trapping some passengers in carriages.
Those who were able to escape with their luggage hurriedly dragged bags from the smoking wreck to a nearby road.
"The truck driver was taking chances. He thought that he was going to pass through," Transport Minister Joe Maswanganyi told journalists. "Little did he know that the train was going to hit him. That has cost a lot of lives."
The train with 429 passengers aboard had been traveling from Port Elizabeth to the country's commercial hub, Johannesburg.
More From This Section
Video showed part of the Shosholoza Meyl train in flames after the collision that occurred between the communities of Hennenman and Kroonstad in Free State province.
The crash derailed half a dozen carriages, and power lines were damaged. A large vehicle was upside down beside a train carriage that appeared to have partly crushed another, smaller vehicle.
The truck driver emerged unscathed and the train driver and his assistant suffered minor injuries, Swartz said.
"Human error" caused the accident, he said. An investigation continued.