Eleven people were injured when a train hit rocks and mud left by a landslide on the line in a densely wooded area near the Swiss Alpine resort of St Moritz.
None of the 200 passengers aboard was killed, despite the derailment leaving one carriage in the ravine and another hanging over the edge.
Passengers said they had joined forces to prevent the second carriage slipping into the ravine by pressing towards the rear, according to The Times.
The eight-carriage train had been travelling between the mountain resort of St Moritz and the regional capital of Chur.
Four rescue helicopters were sent to the area to help to carry the passengers to safety. Others who were able to walk made their way down the line to the town of Tiefencastel.
Five people were seriously injured and another six sustained slight injuries, Anita Senti, a spokeswoman for Graubunden police, said.
The region had experienced heavy rains in recent days.