"What we know at this stage is that more than 30 people appear to have died at the point of impact," said Thulani Sibuyi, head of eastern Mpumalanga province's community safety department.
Victims had been "torn into pieces" and parademics were still on the scene near Malelane, east of the provincial capital Nelspruit, he said.
"It would appear as if the truck driver may have crossed the railway line without having a proper look-out and as a result the train hit him and then pulled him for about a kilometre to two kilometres," said Sibuyi.
"The bodies are lying all over the scene, people torn apart and so forth."
The exact numbers of dead and the many injured who had been taken to hospital still needed to be confirmed, he said.
The truck was transporting about 50 people to farms, he said.