Rahul Mithaiwala (Shah Rukh Khan) is a forty-year-old bachelor living in Mumbai. His parents died in a car accident when he was eight years old, so his grandparents raised him. Rahul’s grandfather (Lekh Tandon) owns a chain of confectionery shops. Before his grandfather’s 100th birthday celebration, two of Rahul’s friends invite him to accompany them on a vacation in Goa, which he accepts. Rahul’s grandfather dies on the eve of the celebration, just when he witnesses Sachin Tendulkar on TV in a cricket match get dismissed on his 99th run. His grandmother tells Rahul that his grandfather wanted his ashes to be divided into two parts—one of each to be immersed in the Ganges and Rameswaram. She asks Rahul to take the ashes to Rameswaram and disperse them. Reluctantly, he accepts her request but is also eager to attend the Goa trip. Rahul and his friends plan to dump the ashes at Goa but his grandmother wants to see him off, forcing Rahul to travel by train. He books a single ticket on the Chennai Express, planning to meet his friends along the way, at Kalyan Junction station . However, Rahul forgets to take the ashes, and he almost misses the train when he returns to collect them. As he tries to leave the train, he notices a young woman running to board it. He helps her and four other people board the moving train, but the train leaves the station before he can get off.
Rahul tries to flirt with the woman, who starts communicating by singing parodies of Hindi film songs, and explains that the four men are trying to kidnap her. Rahul lends her his mobile phone so that she can contact her friends, but the men with her grab it and throw it from the train. Rahul is annoyed, but says nothing because the men are carrying weapons. Rahul tells the ticket inspector about them, but they push the inspector into a river below a bridge. Panicked, Rahul learns that the men are her cousins, and that her name is Meenalochni “Meena” Azhagusundaram (Deepika Padukone). She is fleeing from a forced marriage to Tangaballi (Nikitin Dheer). Her father, Durgeshwara Azhagusundaram (Sathyaraj) is a powerful headman of the local mafia in Tamil Nadu.
Rahul (Shahrukh Khan) helps Meenamma (Deepika Padukone) board the train, a spoof of the famous train scene in Khan’s 1995 film Dilwale Dulhania Le Jayenge Meena takes Rahul to her father and introduces him as her lover. Tangaballi challenges Rahul to a duel that Rahul unknowingly accepts, due to his lack of knowledge in Tamil. On the night of the duel, Rahul escapes with the help of a local policeman, Shamsher (Mukesh Tiwari), but he ends up on a ship with Sri Lankan terrorists and smugglers. A gun battle ensues between the police force and the terrorists. When the police officers investigate and take Rahul into custody, he tells his story and ends up back in Komban. Terrified and once again surrounded by Azhagusundaram’s sickle-wielding henchmen, Rahul pretends to take Meena hostage and escapes with her in her father’s car, battling Azhagasundaram’s men. When the car has a breakdown, Rahul and Meena quarrel and part ways. Rahul, not knowing which way to go, returns to Meena, who takes him to the Vidhamba village. Meena tells the villagers that they are a married couple who needs protection and rest, to which the villagers agree.