Anthony Hurford, a passenger on the Shrewsbury-bound train, said he felt “pretty shellshocked” by the incident.
“Suddenly I was on the floor with my laptop strewn ahead of me, wondering what the hell had happened,” he told BBC Breakfast.
Evan Edwards, a witness, said it appeared that one of the trains had failed to stop in the normal place on a hill “and from what we can gather he just slid and he couldn’t stop the train”.
The Cambrian railway east of Machynlleth will be closed while investigations continue, Network Rail and Transport for Wales said, urging passengers not to travel on that part of the network.
“We’re extremely grateful to the emergency services who attended the scene and helped our passengers and staff in challenging circumstances.”
The services involved were the 18:31 from Shrewsbury to Aberystwyth and the 19:09 from Machynlleth to Shrewsbury.