Jean Valjean (Hugh Jackman) is a convict who has served 19 years in prison for a petty crime. He is finally paroled but after being turned away by dozens of folks while seeking shelter or work, he tears up his parole papers and starts a new life under an assumed name. Years later, he is the mayor of a French town and runs a factory. One of his workers, Fantine (Anne Hathaway) is wrongly accused of being a harlot and is fired. She lives a miserable life on the streets, selling her hair, her teeth and eventually her body all to support her child, Cossette, who is being cared for by some innkeepers. Fantine has a violent exchange with a customer but before she can be arrested, Valjean realizes that she is an innocent and takes her to a hospital. Valjean vows to find her daughter and raise her just as Fantine dies.
Inspector Javert (Russell Crowe) has been in pursuit of Valjean since he broke his parole and traps Valjean at Fantine’s deathbed, but Valjean escapes. He finds Cossette, pays off the abusive innkeepers and takes Cossette to Paris where he cares for her.
After eight years and post-French Revolution, Cossette (Amanda Seyfried) has grown into a lovely young woman who falls in love upon first site with Marius, a revolutionary. Their love is short lived when Javert appears and Valjean, thinking he is still be pursued, tries to leave Paris with Cossette. But the people’s uprising derails their leaving and Valjean goes to the barricade to find Marius. Javert also goes to the barricade disguised as a revolutionary but is quickly found out. Valjean and Javert meet again and though given the opportunity to kill Javert, Valjean frees him.
The French troops attack the rebel barricade and all are killed except Marius and Valjean. Valjean rescues Marius and encounters Javert one last time, this time Javert lets Valjean go. Javert then commits suicide.
Marius recovers from his wounds and is set to marry Cossette. Valjean finally confesses to Marius that he is a convict on the run and in order to protect Cossette from learning the truth of his past, leaves quietly. Marius and Cossette wed and the innkeepers show up at the wedding and attempt to blackmail Marius about Valjean, saying they saw him carrying a body of a man Valjean murdered after the attack on the barricade. They produce a ring from the supposed victim and Marius realizes the ring is his and that Valjean actually saved him that night.
The newlyweds find a dying Valjean in a convent. He gets to see them one last time and confess his past and tell Cossette he loves her. He dies peacefully and in death is joined by all of the rebels and Fantine.