In the early 1900s, Kaushalya (Smita Jaykar) hears that her younger son, Devdas (Shah Rukh Khan), is to return home after he had left at age 10 for law school in England. Kaushalya tells her neighbor Sumitra (Kirron Kher), who is overjoyed. Sumitra's daughter, "Paro" Parvati Chakraborty (Aishwarya Rai) and Devdas have shared a deep friendship since childhood. When Devdas went to England, Paro had lit an oil lamp to prompt his early return and never allows it to extinguish.
When Devdas returns, the friendship between him and Paro becomes love. Everyone believes that Devdas and Paro will get married, but Devdas' scheming sister-in-law Kumud (Ananya Khare) reminds Kaushalya of Paro's maternal lineage of nautch girls and nautanki performers, inappropriate for the Mukherjee family. Sumitra publicly announces her desire for Devdas and Paro to marry, and Kaushalya rejects and humiliates her in public by saying that she is from a lower class in society. Devastated, Sumitra hastily arranges Paro's marriage to a man from a wealthier family than the Mukherjees: Thakur Bhuvan Chaudhry (Vijayendra Ghatge), a forty-year-old widowed aristocrat with three grown children.
When Devdas' father also rejects Paro, Devdas leaves his parents' house and takes refuge at a brothel. He leaves a letter for Paro, falsely stating that love had never existed between them. At the brothel, he 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 her during her wedding and asks her to elope but Paro refuses, reminding him of the way he had discarded her so easily.
Paro learns from her new 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. She dutifully fulfills her responsibilities, while Devdas, heartbroken at having lost Paro, permanently moves to Chandramukhi's brothel and becomes an alcoholic. When Devdas' father is on his deathbed, he asks to see his son Devdas, but Devdas arrives later, at his father's funeral, drunk.
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 her but Kumud tells his mother that Devdas had stolen the keys. His mother believes her and Devdas leaves, banished. Paro arrives at Chandramukhi's brothel, accusing her of driving Devdas to drink, but soon realizes that Chandramukhi loves Devdas. Paro urges Devdas to stop drinking, but Devdas remains stubborn. He promises Paro that before he dies, he will come to her doorstep one last time.
Paro invites Chandramukhi to a celebration of Durga Puja at her husband's home and introduces her to her in-laws without revealing Chandramukhi's profession. However, Bhuvan's ill-natured son-in-law Kalibabu (Milind Gunaji), a frequent visitor to the brothel, reveals Chandramukhi's background and humiliates her in front of the guests. He also tells Bhuvan of Paro's relationship with Devdas. As a result, Bhuvan permanently forbids Paro from leaving the mansion. Devdas tells Chandramukhi that she must let him go, and decides to travel the country; on a train, he meets his old college 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 runs through the mansion, 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 reach him, leaving her sobbing inside. Devdas dies, whispering Paro's name with his last breath. At the same time, the lamp that Paro had lit for him flickers out forever for all eternity.