Sir Narayan Mukherjee (Vijay Crishna), a zamindar, and his wife Kaushalya (Smita Jaykar) have heard that their younger son, Devdas (Shahrukh Khan), is coming home from a law school in England to their mansion in Tal Sonapur, Bengal after an absence of ten years. When Kaushalya tells her neighbor Sumitra about Devdas' impending return, Sumitra is as overjoyed as Devdas' own mother, and with tears in her eyes she reminisces with Kaushalya about Devdas' and her daughter's deep childhood friendship.
She describes how when Devdas was sent off to England at the age of ten, her daughter Paro had chased his carriage weeping, trying to return to him 3 rupees that she owed. The young girl Paro had lit an oil lamp for Devdas under the belief that by doing so he will return sooner. She tends to this lamp throughout her childhood in honor of her dear friend, never allowing it to extinguish.
On the day of his return, Kaushalya insists that everyone in the family should close their eyes so that she will be the first person to see her son. Her plan backfires, however, when instead of coming straight home, Devdas goes to see "Paro" Parvati Chakraborty (Aishwarya Rai), his childhood sweetheart, first. This incident makes Kaushalya jealous and at first she refuses to receive her son when he arrives, but he cajoles her and they joyfully reunite. In the ensuing weeks it becomes clear that the years apart have turned Devdas' and Paro's friendship into love. It seems to everyone, including Paro's mother Sumitra (Kirron Kher), that Devdas and Paro will get married, but Devdas's scheming sister-in-law Kumud (Ananya Khare) reminds Kaushalya of Paro's maternal lineage, which consists of nautch girls and nautanki performers.
This is considered inappropriate for an alliance with the Mukherjee family. When Sumitra announces her desire for Devdas and Paro to marry, Kaushalya rejects and humiliates her in public saying that she was from a far lower class in society than themselves. Devastated, Sumitra vows to ensure that Paro will get an even better marriage and assures Kaushalya that she will find her daughter a husband richer than the Mukherjee family within a period of seven days. She soon arranges for Paro to marry Thakur Bhuvan Chaudhry (Vijayendra Ghatge), a forty-year-old widowed aristocrat with three grown children.
Meanwhile, Devdas' harsh and ambitious father also rejects Paro and tells Devdas that both Paro and her mother belong in a brothel. Devdas leaves his parents' house and takes refuge at a brothel with his college friend Chunnibabu (Jackie Shroff). He leaves a letter for Paro, falsely stating that love had never existed between them. At the brothel, Devdas meets a good-hearted tawaif (courtesan) named Chandramukhi (Madhuri Dixit), who falls in love with him. Soon, Devdas realizes his mistake in abandoning Paro. He returns to Paro at the time of her wedding to Bhuvan Chaudhry and asks her to elope with him. Paro refuses, reminding him of the way he had discarded her so easily. Grieved, Dev leads Paro to her bridal procession and Paro, still holding the lamp, sobs as she is carried away.
Paro learns from her new aristocrat husband that he has married her only to be mother to his children and lady of the estate, but that his love is only for his late first wife and he has no plan to have a true love relationship with her. Paro dutifully fulfills all her responsibilities, serving as a kind mother to the children and exemplary lady. Devdas, having lost Paro, is heartbroken. He moves to Chandramukhi's brothel permanently and becomes an alcoholic.
When Paro hears that Devdas' father is on his death bed, despite his past cruelties to Devdas and herself, she rushes to his bedside to offer comfort. He asks to see his son Devdas, but Devdas only arrives later, drunk, at his father's funeral.
Eventually, Devdas becomes so ill that the slightest dose of alcohol could kill him. He returns to the family home to heal, and discovers that his sister-in-law has stolen his mother's keys to the family safe. He confronts his sister-in-law and brother demanding they return the keys. An altercation ensues, and when his mother appears asking what is going on, the sister-in-law claims that Devdas had stolen the keys. His mother again believes the sister-in-law and sides against Devdas. Without denouncing the true culprits, Devdas leaves, banished.
News of Dev's alcoholism reaches Paro, who arrives at Chandramukhi's brothel and angrily accuses her of manipulating Devdas into drinking. She soon realizes, however, that Chandramukhi deeply cares for Devdas. Chandramukhi urges Paro to convince Devdas to stop drinking; Paro attempts to persuade him, but Devdas remains stubborn. He promises Paro that before he dies, he will come to her doorstep one last time.
Paro invites Chandramukhi, whom she has befriended, to a celebration of Durga Puja at her husband's home and introduces Chandramukhi to her in-laws without revealing her profession. However, Bhuvan's ill-natured son-in-law Kalibabu (Milind Gunaji), a frequent visitor to Chandramukhi's brothel who made inappropriate advances towards Paro, reveals Chandramukhi's background and humiliates her in front of Bhuvan and the guests. He also tells Bhuvan of Paro's relationship with Devdas. As a result, Bhuvan punishes Paro by permanently forbidding her from leaving the mansion.
Devdas tells Chandramukhi that he loves her but that she must let him go. He decides to travel the country; while on a train, he meets his old friend Chunnibabu, who urges him to drink in the name of friendship. Devdas drinks knowing full well it will be fatal.
On the verge of death, Devdas travels to Paro's house to honor his promise, collapsing under a tree in front of the main gate. Paro at first is only told that the man outside is an anonymous traveler. She performs prayers inside the house, and as she throws flower petals on the icon, flower petals likewise fall on Devdas outside. Paro then learns that it is Devdas outside the gates, and, screaming his name, runs through the mansion and grounds attempting to reach him. Bhuvan sees this and orders the servants to shut the gates. Devdas sees a blurred image of Paro running towards him, but the gates close just before she can escape, leaving her sobbing inside. When the gate slams shut, Devdas dies, whispering Paro's name with his last breath. At the same time, the lamp that Paro had lit for him flickers out.