An American couple, Roy (Woody Harrelson) and Jessie (Emily Mortimer), takes the train from Beijing to Moscow as an adventurous side trip on their return home from a Christian mission in China. The gregarious Roy befriends their cabin mates, a Spanish man, Carlos (Eduardo Noriega), traveling with his Seattle-born girlfriend, Abby (Kate Mara). The reserved Jessie does not share her husband's warmth towards the globe trotting pair. In course of the journey, Carlos shows Jessie a collection of "rare" souvenir matryoshka dolls he is carrying.
When Roy misses the train in Irkutsk while sightseeing, Jessie is left alone with Carlos and Abby. Jessie decides to get off the train and wait for Roy to arrive in another train. Carlos and Abby get off the train with Jessie, and proceed to a hotel. In the restaurant, Jessie sees dolls nearly identical to the ones that Carlos had shown her. Abby is upset by this and goes off to bed. Jessie begs Carlos not to involve Abby in his suspicious activities.
The next morning Carlos comes to Jessie's room, tells her that his shower is not working and asks to use her bathroom. Jessie receives a call from the reception desk and leaves Carlos in the room. The reception it turns out has no news on the whereabouts of Roy. She later receives a telephone call confirming that Roy will rejoin her at 4 o'clock that day.
Carlos convinces Jessie to accompany him to an old church. The two travel into the middle of a snowy wilderness and Jessie, an amateur photographer herself, starts clicking pictures of the old church. In the midst of the wilderness, Jessie surrenders to Carlos' advances and the two begin kissing. However, the roof of the old church collapses and Jessie comes to her senses and decides to stop. Carlos however does not give up and continues to pursue Jessie, calling her a tease and attempting to force himself on her. Unable to stop Carlos' unwanted advances, Jessie beats Carlos to death with a plank. She returns to her hotel and goes to the railway station to meet Roy.
Ilya Grinko (Ben Kingsley), an inquisitive Russian narcotics officer whom Roy previously befriended, turns out to be the new cabin mate of Roy and Jessie. He is traveling from Vladivostok to Moscow for a conference. Jessie finds the dead Carlos' dolls in her own suitcase and realizes that Carlos may have hidden them when she had gone to the reception desk that morning. Carlos was smuggling heroin in those dolls and Grinko, who is on the payroll of a Russian drug lord, has an interest in the whereabouts of Carlos and Abby.
Jessie unsuccessfully tries to get rid of the dolls while on the train. She panics when Grinko becomes suspicious and confronts her, and returns to her cabin to find Roy examining the dolls. She explains their origins and the two of them surrender the dolls to Ilya. Having seemingly gotten out of a risky situation, the next morning, she and Roy awake to discover that most of the train's cars are now gone along with the passengers - only Grinko and his partner Kolzak (Thomas Kretschmann) remain. Grinko and Kolzak stop the train in the middle of nowhere and take Jessie and Roy to an abandoned military bunker, where Abby is being tortured. Ilya says it's about more than the heroin; it's about the money that Carlos has that belongs to the drug lord. Ilya tells Jessie that Abby is not a "good girl" as Jessie had thought - Abby recruited Carlos, was responsible for another man's death, and is trying to cheat the drug lord of his money. Jessie disbelieves Ilya because Carlos told her Abby was innocent.
Jessie and Roy escape by boarding the train. Ilya and Kolzak follow them, the train has a head-on collision with another train, and Ilya shoots Kolzak to maintain his cover that he is on the right side of the law. He claims he is a government investigator who rescued Jessie and Roy from a hostage situation. Jessie, weakened, tries to tell them that Ilya is lying, but the Russians don't understand English. As she loses consciousness, she sees Ilya walking away into the woods.
U.S. officials later tell Jessie and Roy about Carlos' criminal history. He has past convictions for both theft and sexual assault. The officials don't know anything about Abby and report that she is just a twenty-year-old who got mixed up with the wrong guy. Jessie and Roy end up signing statements for the U.S. officials, and Jessie never tells them that she killed Carlos, although Roy may or may not have heard her admit to this when the train was about to crash. Upon touring Moscow and seeing a billboard of a girl sitting on the end of a dock (similar to a scene Abby had described as her dream home), Jessie insists on talking to Abby in the hospital.
The last scene shows a still limping Abby finding Carlos's body in the snow by the old church. Abby tears open a hidden pocket in his jacket and finds all the money that had been stolen, stacks of 500 notes sealed in a long clear roll. She takes the money and walks away, leaving Carlos' body without a backward glance.