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. On the day of his return, Kaushalya insists everyone in the family close their eyes so that she will be the first person to see him. Her plan backfires, however, when instead of coming straight home, Devdas goes to see Parvati "Paro" Chakraborty (Aishwarya Rai), his childhood sweetheart, first. This incident ignites Kaushalya's dislike of Paro.
Paro is Devdas's neighbour and childhood friend. The years apart turned their friendship into love. When he was sent to England at the age of ten, she lit a lamp for him, which she carefully tended to over the years and never allowed to extinguish.
It seems to everyone, including Paro's mother Sumitra (Kirron Kher), that Devdas and Paro will get married, but Devdas's vindictive sister-in-law Kumud (Ananya Khare) reminds Kaushalya of Paro's maternal lineage, which consists of mujra dancers. 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. In retaliation, Sumitra vows to ensure that Paro will get an even better marriage, and soon arranges for Paro to marry Thakur Bhuvan Chaudhry (Vijayendra Ghatge), a forty-year-old widowed aristocrat with three grown children.
Devdas gets into a fight with his father about his relationship with Paro and flees to 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.
Devdas, having lost Paro, is heartbroken. He moves to Chandramukhi's brothel permanently and becomes an alcoholic. Eventually, he becomes so ill that the slightest dose of alcohol could kill him. On his deathbed, his father asks to see Devdas, who arrives at his father's funeral drunk. After an altercation with his brother and sister-in-law, his family banishes him.
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 who turns out to be Kalibabu (Milind Gunaji), a frequent visitor to Chandramukhi's brothel who made inappropriate advances towards Paro, reveals her 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 offers him a glass of wine. Devdas drinks it knowing fully well it will be fatal.
On the verge of death, Devdas remembers his promise to see Paro one last time. He travels to her house, collapsing in front of the main gate. Paro learns of his presence, and, screaming his name, runs out of the house and attempts to reach him. Bhuvan sees this and orders the servants to close the gates, leaving Paro sobbing in front of them. Devdas sees a blurred image of Paro running to him, but the gates close before she can reach him and Devdas dies. At the same time, the lamp that Paro had lit for him flickers out.