Aditya Kashyap (Shahid Kapoor), the son of a recently-deceased famous industrialist, demoralized by his mother's public affair and subsequent departure, gets even more depressed after attending the marriage of the woman he loves to another man. Feeling ashamed to face the world, he walks out of the wedding, boards a train at night, and appears on the verge of committing suicide. While on board, he meets Geet Dhillon (Kareena Kapoor), a lively and talkative young woman who is leaving Mumbai to go to her hometown, Bhatinda in Punjab.
Initially, Aditya finds Geet very irritating, and every meeting becomes mental torture for him. She discloses big plans of eloping with her boyfriend Anshuman (Tarun Arora), as she fears resentment from her parents. Geet irritates Aditya to the point where he leaves the train. In trying to get him back on the train, she ends up missing it and finds herself stranded on a desolate station, Badnagar, with no luggage or money. She confronts Aditya and tells him that he is now responsible for getting her safely to her house in Punjab. Both of them begin an idyllic journey through the exuberant North Indian heartland, making their way via buses, taxis and camel-carts to reach her house. Through spending so much time with Geet, Aditya begins to feel good about life again.
On arrival, Geet's family (Pawan Malhotra, Dara Singh and Kiran Juneja) mistakes the two for lovers, but they quickly assure them that there is nothing of the sort. Aditya tells her family he is a musician to avoid being recognized as the famous industrialist, and her family accepts this. A few days later, Manjeet, an old childhood friend of Geet's who wants to marry her, arrives as her suitor. Geet, however, does not want to marry him. While he is there, Geet leads him to believe that there is something intimate going on between her and Aditya, and successfully dissuades him from following through with the match. Later that night, Geet runs away from her home, along with Aditya, to marry Anshuman in Manali. However, Geet's sister sees them running away together and informs the entire family. The two hurriedly make their escape, but this confirms the suspicion in Geet's family that they are lovers. The two escape to Manali together, and then part to continue on their separate ways.
Upon returning to Mumbai with a new conviction and positive outlook on life because of Geet's influence, Aditya guides his company to extreme success. Around nine months later, he launches a new product, a calling card named Geet, as he has now fallen in love with Geet. Geet’s family sees this launch on TV and runs to Mumbai to meet Aditya. Aditya is shocked to learn that Geet has not returned home. He takes it upon himself to find her and return her to her family. He returns to Manali, where he expects her to be with her new husband. Instead, he finds that Anshuman had turned her out to the streets and refused to marry her.
After chastising Anshuman for what he did to her, Aditya leaves and finally tracks Geet down in Shimla, shocked to see what she has become: a quiet, reserved, and miserable schoolteacher. Convincing her to face her circumstances, he manages to bring her back to normal life, and things start to look up for her again. However, Anshuman arrives and tries to patch up their relationship, claiming he realized he was a jerk. Initially, Geet does not want to accept his apology, but Aditya pushes her to be with him, even though he loves her too. All three then travel back to Bhatinda to unite Geet with her family, and to announce that Geet and Anshuman are together. However, upon their arrival, the family again assumes that Geet and Aditya are together and in all the confusion, there is no chance to right the family's misconceptions. While trying to clear the misconception, Geet comes to realize that she is in fact in love with Aditya, not Anshuman. She then confesses her love to Aditya and the couple gets married. They go on to have two daughters.