Naina Catherine Kapur (Preity Zinta) is an angry young woman, for more than one reason. Her father committed suicide when she needed him the most, leaving her mother Jennifer (Jaya Bachchan) to raise their two young children all alone. The restaurant Jennifer operates is faltering. Furthermore, Naina's paternal grandmother, Lajjo (Sushma Seth), blames Jennifer for the suicide and refuses to accept Gia (Jhanak Shukla), a six-year-old girl whom Jennifer adopted, as her granddaughter, blaming her for bringing bad luck to the family. Naina has to put up with the daily fights that take place in the house as a result. The bright spots in her life are the toiling and tolerant Jennifer and Naina's bumbling MBA classmate Rohit (Saif Ali Khan)
Aman Mathur (Shahrukh Khan) arrives in Naina's neighbourhood and soon changes everything. Noticing the sadness of his new neighbours, he intervenes. His well-meaning interference in their activities, his revival of their financial condition, and his general optimism soon change their lives for the better. Although Naina is initially reluctant to enjoy Aman's presence as others do and is irritated by his extroverted, overly-enthusiastic attitude, she grows to like him and eventually falls in love with him.
Meanwhile, her friend Rohit has been in love with her. On Aman's encouragement, he calls Naina for lunch but before he can confess to her, she reveals her love for Aman. Rohit informs Aman about this and leaves shortly for his parents' home. Naina goes to Aman's house where, to stop her from confessing her feelings to him, Aman tells her that he is married to a woman named Priya (Sonali Bendre) who actually is his doctor.
Aman, it is revealed, is dying of a severe condition that is progressively weakening his heart. Knowing that his lifespan is limited, he goes through life facilitating friendships and courtship, and urging people to enjoy themselves in the present moment since "tomorrow might never come". His excursions into such altruism eventually lead him to sacrifice his love for Naina and instead play matchmaker between her and Rohit. After a few weeks of courtship, Naina starts to like Rohit as more than just a friend and accepts his proposal of marriage.
The tension within Naina's family also stops when Aman, after accidentally intercepting a personal letter addressed to Jennifer, reveals that Gia is Naina's half-sister through their father's extramarital affair. Jennifer's selfless acceptance of her husband's infidelity is what led to his suicide. Lajjo finally accepts Gia, and the now-united family wholeheartedly prepare for Rohit and Naina's wedding.
As the film progresses, Aman's health deteriorates. At the engagement party of Rohit and Naina, an episode of intense excitement nearly kills him. Naina, in a chance encounter, meets Priya, Aman's supposed wife, and learns that she is actually his doctor. She then realises that Aman had lied about his being married to hide his true condition, and possibly, the fact that he may love her in return. She goes to see Aman, and although he defiantly refuses to admit his true feelings, she finally understands that he loves her as well. Aman convinces her to get married to Rohit anyway, because he will not be alive for much longer. Naina agrees, and shortly after Rohit and Naina marry. Aman eventually dies of his weakness, with Rohit, Naina, and family by his side.
Twenty years later, we see an older Naina relating the story of Aman's selfless love to a grown Gia. We also see that she and Rohit now have a daughter of their own.