Naina Catherine Kapur (Preity Zinta) is a bespectacled 23-year-old Punjabi MBA student who is quite pessimistic and cynical towards her life and relationships. The movie opens up to Naina visiting Brooklyn Bridge Park in New York City. She relates how whenever she misses her father, she comes to the park. Upon returning home, we see Jenny (Jaya Bachchan), Naina's widowed mother who is on the phone discussing a loan extension for their centrally situated restaurant which isn't doing so well. Upon Naina's father's passing, all the house's responsibilities have fallen on her. Naina begins looking through the mail to find another private and confidential letter addressed to her mother, among many others she periodically receives. She also finds a letter from a Punjabi matrimonial service, Kunwari Kudi (meaning: Single Girl) that her grandmother and her aunts have enlisted in hopes of marrying off Naina to a Sikh sardar man. Naina's grandmother Lajjo (Sushma Seth), and Naina's aunts Kammo (Shoma Anand) and Vimmo (Kamini Khanna)are religious aspiring musicians who often perform for their neighbor, Chadda (Dara Singh) and to the horror and inconvenience of many of their other neighbors. There are also Naina's younger siblings in the home, including Shiv (Athit Naik), Naina's disabled biological brother and Gia (Jhanak Shukla), Naina's adoptive sister. There is much tension in the Kapur household as Lajjo is resentful towards Gia and Jenny as she believes Jenny's decision to adopt Gia is what led to her husband's suicide, thus causing her to be affectionate with Naina and Shiv, while being cold to Gia. There is also much religious tension in the house as Jenny practices Christianity while Lajjo practices Sikhism.
Naina's best friend, Jaspreet Kapoor, nicknamed Sweetu (Delnaaz Paul) is an overweight bubbly hopeless romantic who often voices the details to her love life to Naina, who often offers blunt and cynical advice to her. Sweetu lives next door to Naina, thus often causing a confusion to mailmen who confuse their surnames. Sweetu also has an older sister Jaswinder, nicknamed Jazz (Lilette Dubey) who is quite a flirtatious woman going through insecurities of old age and a midlife crisis. Jazz is business partners with Jenny in their restaurant venture, so the two households are quite close to one another. Naina's other best friend, Rohit Patel (Saif Ali Khan) is then introduced. Rohit is a 27-year-old Gujurati living in Manhattan. His family is quite wealthy, as his parents, Karsanbhai (Satish Shah) and Sarlaben (Ketaki Dave) who live in Connecticut are owners of a popular food chain-Dial-A-Dhokla. Rohit is currently working in advertising and also attends MBA classes with Naina. He is also quite the hopeless romantic as during an MBA class, he spots a woman, Geeta Parekh (Anaita Shroff Adajania) who is a new entry student as well as a divorcee. As she approaches near Rohit's aisle, Rohit asks her to sit behind him in class. However, before she can sit, an elderly woman reaches the seat before her, unknown to Rohit. As class starts, he writes "Dinner at 8" on a slip of paper and passes it to her thinking she is Geeta. The woman accepts and Rohit turns to find her instead of Geeta in shock. Naina narrates this as showing how at first, she did not like Rohit at all. But she began to like him as he is truly a good man, as he did not cancel his date that night. She begins to explain how having Rohit around helps her forget all her troubles at home.
Meanwhile, Aman Mathur (Shah Rukh Khan) and his mother shift to Naina's neighbourhood to live with his uncle, Chadda. Noticing the sadness of his new neighbors, and the beauty of Naina he intervenes and tries to know Naina better. His well-meaning interference in their activities, his help in reviving their financial standing, and his general [optimism] soon change their lives for the better. Meanwhile, Aman is seen speaking with a woman, Priya (Sonali Bendre) discussing important things although it is not known what this might be. Naina is initially reluctant to enjoy Aman's presence, as he has helped her family so much, taught her how to accept happiness, and even given her the confidence to dress brightly and even lose her glasses. She grows to like him and eventually falls in love with him. Also, Rohit, has begun to notice Naina's new outlook and optimism on life, and he too begins to fall in love with her. Afraid to admit his feelings he seeks Aman's advice while Naina also seeks Sweetu's. As Sweetu is encouraging her, Naina decides to call Rohit instead to tell him of her feelings towards Aman. Thinking that she might admit her feelings towards him, Rohit agrees to meet with Naina to tell her he loves her. Upon reaching, Naina reveals that she is in love with Aman. Heartbroken, Rohit tells Naina to be honest about her feelings towards Aman and later informs Aman about this. Naina goes to Aman's house in hopes of telling him about her feelings towards him where she sees a picture of a woman in a bridal costume hugging Aman. Asking about the woman, Aman explains that he is married to the woman, Priya who we had seen earlier. He explained how they had had a disagreement back home in India and she had fled to New York where her parents are. Aman explains that he and his mother have come here to fix their problems and bring her back home. Naina, being heartbroken leaves his home on the verge of tears, only to break down outside and run to Brooklyn Bridge Park.
Inside, Aman's mother asks what has happened. It is revealed that Priya is not Aman's wife, but in fact a close friend, who is a physician practicing in the States. He is suffering from a fatal cardiac disease in which he needs a transplant in order to survive, however, the chances of finding a transplant and surviving are quite low and he has come to accept this. He tells his mother that he does love Naina deeply and has lied to save Naina from a life of loneliness once he passes and how he intends to help her find love with Rohit, who genuinely loves her and will be able to take care of her. Upon learning what Aman had told Naina, Rohit realizes that Naina will never be able to forget Aman and he decides to move on by temporarily dating another woman, Camilla (Simone Singh) who is only out to marry Rohit for his money.
Aman convinces Rohit to leave Camilla and work on a strategy that will make Naina fall for Rohit in six days. This eventually works by the end of the sixth day, but after overhearing a conversation between Aman and Rohit, Naina finds out that Rohit sought Aman's help to attain her love. She leaves his house in anger, where Aman and Rohit chase her to a train station. Rohit confesses his love for her, but Naina believes that he does not truly love her, and this is only a ploy on Aman's part to help her move on from him. But Aman, desperate to make Naina realize how much Rohit loves her, pulls out Rohit's diary from his pocket and reads a fraction of it. Finding a blank page, he decides to confess his own feelings for Naina, pretending they were Rohit's words. Also, Jenny later convinces Naina of Rohit's love towards her. Naina, realizing her misconceptions decides to meet Rohit, leaving her entire family and friends including Aman to wait at home to hear what will happen. Rohit proposes to her in an elaborate and beautiful way to show his love for her. Naina, realizing how much Rohit loves her, accepts the proposal and there is a huge celebration at the Kapur household when Rohit later calls Aman to tell him what had happened. Aman sheds a few tears in the comfort of his mother but still assists everyone in the preparations for the wedding. The tension within Naina's family also come to an end when Aman, after accidentally intercepting a personal letter addressed to Jenny, reveals to Lajjo that Gia is Naina's half-sister through their father's extramarital affair. Jennifer's acceptance of her husband's infidelity and towards Gia is what led to his suicide. Lajjo now accepts Gia, and the now-united family begin the preparations for Rohit and Naina's wedding. After attending the engagement ceremony, Aman's health deteriorates and he has a stint at the hospital. Naina, in a chance-encounter meets Priya and Abhay (Sanjay Kapoor), her husband at a jewellery store and learns the truth about Aman's health condition and his 'marriage' to Priya. Shocked and heartbroken, Naina leaves in a hurry. Priya calls Aman to inform him of what has just happened and Aman escapes the hospital, in an already weak condition to find both Rohit and Naina. He visits Rohit and asks him to fulfill his dying wish of marrying Naina. He then visits Brooklyn Bridge Park to find Naina there in tears. When she approaches and accuses Aman of lying, he tells her he does not love her although the tears in his eyes and their embrace says otherwise. Rohit and Naina get married. After their marriage, Aman hugs them both and then breaks down in tears.
Some days later, he wakes up in hospital. Aman's loved ones visit him. Naina is unable to be near him out of grief and leaves the room in tears. He then makes Rohit promise that "In the next life, and every life to follow, Naina will be his." Aman dies in the hospital with Rohit by his side and Naina looking through the window.
Twenty years later, an older Naina relates the story to a grown-up Gia, telling her how she will never be able to forget Aman, her first love, for he had taught her to love life, herself, and Rohit. It is revealed that Naina and Rohit have a daughter of their own, Rhea, and are living happily. Nearing the end of the movie, Rohit tells Naina he loves her and they walk towards their house following Gia and Rhea in each other's arms. Naina ends her story by narrating that while every wife dreams of finding a friend in her husband, she was lucky to find a husband in her friend.