Jean Valjean (Gérard Depardieu) è un forzato che sconta una pena detentiva al bagno penale di Tolone per aver rubato del pane. È tenuto sotto sorveglianza dal rigido ispettore Javert (John Malkovich), un uomo convinto che è impossibile redimersi una volta usciti dalle prigioni. Scontata la pena (notevolmente allungata a causa dei molteplici tentativi di evasione), Valjean viene rilasciato con un passaporto che lo qualificherà per sempre come ex forzato, quindi reietto della società. Non avendo nulla o un posto dove andare, Jean si imbatte in un ospizio retto da un anziano sacerdote che offre riparo ai senzatetto. Ottenuto asilo, Valjean scopre che il prelato non è un semplice sacerdote bensì mons. Myriel, Vescovo di Digne, il quale lo ammette in casa sua, non essendoci più posto nell'ospizio. Nella notte, Jean lo deruba ma viene subito arrestato e condotto innanzi al Vescovo, che però lo fa rilasciare, mentendo alla polizia e dicendo di aver regalato i suoi beni a Valjean. Rimasti soli, mons. Myriel dona a Valjean i suoi due candelieri d'argento, augurandosi che potranno essere per l'uomo una sicura luce nelle avversità che avrebbe incontrato una volta ripreso il suo cammino. Ripresa la strada verso Montreuil, incontra un piccolo spazzacamino e lo deruba senza scrupoli ma, dopo la malefatta, ricorda le parole di Myriel e se ne pente profondamente, cercando di riparare al danno, ma è ormai tardi. Javert riceve la denuncia dello spazzacamino e si mette sulle tracce di Jean Valjean. Alcuni anni dopo, Valjean è diventato l'amato sindaco di Montreuil sotto le mentite spoglie del sig. Madeleine e si è arricchito onestamente grazie al duro lavoro. Gestisce anche una filanda ove trova lavoro Fantine (Charlotte Gainsbourg), una ragazza-madre che ha affidato le cure della sua piccola Cosette alla famiglia Thénardier, apparentemente distinti gestori di una locanda, ma in realtà truffatori e malfattori che usano la piccola come serva. Quando l'amministratrice della filanda scopre che Fantine è una madre nubile la licenzia, dicendole che quello era il volere del sig. Madeleine (in realtà all'oscuro di tutto) ed è costretta a prostituirsi per corrispondere alle usuraie richieste di danaro da parte di Thénardier (Christian Clavier). Le ricchezze di Madeleine insospettiscono la polizia, che invia, per uno scherzo del destino, proprio Javert a investigare: l'ispettore sospetta subito dell'identità del sindaco, ma attende la prova per essere certo che si tratti del vecchio Valjean. Quando un innocente rischia la condanna a vita per esser stato scambiato per lui, Jean decide di presentarsi in tribunale e confessare. Ma prima di farsi arrestare, Jean scopre la sventura di Fantine (picchiata a morte da un cliente) e le giura di andar a prendere Cosette perché possa vederla prima di spirare. Javert dice a Fantine la verità su Madeleine e la donna muore dal dolore, convinta che Valjean non manterrà la promessa di recuperare Cosette. Indispettito dal cinismo di Javert, Jean scappa e va dai Thénardier, dove si rende conto delle pessime condizioni in cui la piccola è costretta a vivere. Compresa l'avidità dei locandieri, Valjean compra Cosette per un'ingente somma di danaro e scappa con lei, mentre Javert arresta i Thénardier con l'accusa di aver venduto la piccola a Valjean. Per sfuggire all'ispettore, Valjean trova asilo presso un convento di clausura, retto da Madre Innocenza (Jeanne Moreau), grazie all'aiuto di Fauchelevant, un ex cantoniere che era riuscito a trovare ivi lavoro come giardiniere, proprio grazie alle referenze del sindaco Madeleine. Cosette cresce nel convento e diventa una giovane donna erudita e piena d'amore verso il padre, mentre Javert continua a seguire le tracce dell'ex forzato, che comunque trova in Madre Innocenza un'insospettata amica. Jean e Cosette (Virginie Ledoyen) lasciano il convento e si stabiliscono a Parigi e qui incontrano il giovane Marius Pontmercy (Enrico Lo Verso) durante una passeggiata ai Giardini del Lussemburgo. Il giovane, un barone di idee rivoluzionarie, è studente in legge e vive in miseria a causa dei dissidi col nonno conservatore. Vedendo Cosette, se ne innamora. Jean, che a sua volta è ormai innamorato di Cosette oltre il rapporto padre-figlia, decide di non farla uscire, comperando una villa con un grande giardino, ove lei e Marius si incontrano di nascosto. Sulle tracce di Valjean si mettono sia Thénardier, scarcerato ma ridotto sul lastrico, e lo stesso Javert, che ha però l'ordine di indagare sulle associazioni studentesche rivoluzionarie, di cui lo stesso Marius fa parte. I Thénardier conoscono accidentalmente Marius (Eponine, figlia di Thénardier, se ne innamora, ma non viene ricambiata). Il giovane scopre che Thénardier vuole tendere una trappola ai danni di Valjean, ora noto a Parigi come il facoltoso benefattore Fauvre, e chiama Javert per salvarlo. Tuttavia, nel collaborare alla cattura di Thénardier, scopre che l'uomo è colui il quale durante la guerra aveva salvato suo padre sul campo di battaglia ( anche se in realtà l'avido Thénardier stava solo tentando di derubarlo, credendolo morto) ed ha dei rimorsi. Thénardier e i suoi complici vengono arrestati ma riescono ad evadere, grazie a Eponine (Asia Argento) ed al piccolo Gavroche. Scoperto che Javert è sulle sue tracce, Valjean decide di trasferirsi in Inghilterra, ma Cosette, all'idea di non vedere più Marius, ha un malore. L'uomo scopre che sua figlia è innamorata e va su tutte le furie, decidendo di andare a trovare Marius. Il ragazzo, ingannato da Eponine, crede che Cosette sia partita e si arruola tra i rivoltosi che hanno iniziato a scatenare i primi tumulti. Agli scontri finisce per prendere parte anche Valjean, alla ricerca del giovane barone, e durante la battaglia con l'esercito francese muoiono Gavroche, Eponine e Fauchelevant, che stava proprio cercando Jean per unirsi a lui. Durante gli incidenti, Javert viene arrestato dai rivoltosi e condannato a morte, ma Jean gli salva la vita, gesto che inizia ad incrinare le certezze dell'ispettore sulla vera natura dell'ex forzato. A causa di una cannonata, Marius resta gravemente ferito e perde i sensi. Jean decide di portarlo via attraverso le fogne, ove incontra ancora una volta Thénardier; costui, credendo che Valjean abbia ucciso il povero Marius per rapinarlo, gli offre una mano in cambio del denaro trovato addosso al ragazzo. Fuori dalle fogne, Javert arresta finalmente Valjean; tuttavia l'ispettore si lascia convincere dal ricercato ad accompagnarlo alla casa del nonno di Marius, ove lasciare il giovane alle cure della sua famiglia. Colpito dal grande valore di Valjean, Javert accetta persino di accompagnarlo a dare l'ultimo saluto a Cosette ma, una volta tornato fuori dalla sua villa, Jean scopre che Javert gli ha donato la libertà. L'ispettore invia una lettera al prefetto di polizia e poi si suicida, forse perché consapevole di aver sbagliato nel credere all'infallibilità della legge. Marius (ripresosi pienamente) e Cosette si sposano, ma il vecchio Valjean non riesce a gioirne e decide di farsi da parte. Confessa la sua storia a Marius, poiché avverte il bisogno di liberarsi dal fardello del suo segreto, che ormai conosce solo lui. Marius però reagisce in malo modo e, compreso l'ambiguo amore che lega Jean a Cosette, decide di escluderlo dalla vita della neo sposa. Invecchiato, abbandonato a se stesso e derubato dal suo maggiordomo (un ex forzato muto), Valjean si lascia lentamente morire, nonostante le cure garantitegli dal nonno di Marius, che prova per lui grande compassione. Una notte, Thénardier si spaccia per un ex ambasciatore e cerca di carpire denaro a Marius raccontandogli di come Valjean avesse ucciso un uomo nelle fogne di Parigi. Il barone comprende finalmente che a salvargli la vita era stato Valjean e, dopo aver licenziato Thénardier offrendogli del denaro purché si trasferisca assieme alla sua famiglia negli Stati Uniti, corre da Cosette a confessargli che suo padre (che la ragazza sapeva in giro per il mondo) non è mai andato via dalla loro villa ed ora era in fin di vita. I due arrivando giusto in tempo per essere benedetti dal morente Jean, che gioisce, se non altro, per aver potuto vedere un'ultima volta la sua adorata figliola.