Edmund (James Caviezel) is framed for treason by his "friend" Fernand (Guy Pearce) and his shipmate Danglars (Albie Woodington). The local magistrate Villefort (James Frain) sentences him to life imprisonment (despite believing in his innocence) so that Edmund cannot expose Villefort's father as a Bonapartist agent, which would end Villefort's career. Villefort's father is later shot and killed because of a deal made between Fernand and Villefort.
While in gaol, Edmund endures torture and starvation and becomes bitter, especially after learning his beautiful fiancee Mercedes (Dagmar Dominczyk) married Fernand a month after he was imprisoned. However, he is surprised one day by the appearance of a fellow inmate who has tunnelled through the prison walls, Abbe Faria (Richard Harris). Abbe is a well-educated man and a gifted swordsman and he imparts his skill and knowledge to Edmund. He also tells him of a huge treasure hidden on the islet of Monte Cristo. The two men work on tunnelling in the right direction together, but Abbe dies before it is finished. Edmund hides in the body bag intended for Abbe and escapes when the guards throw it into the sea.
Edmund joins a band of smugglers by beating their best fighter, Jacopo (Luis Guzman) who pledges to serve Edmund for life after Edmund shows mercy and does not kill him. Edmund finds the treasure and reinvents himself as the Count of Monte Cristo. He returns to his hometown, Marseille, and plots his revenge against those who have wronged him. Only Mercedes recognises him, and begs forgiveness, revealing she was pregnant when he was convicted and that the boy Albert (Henry Cavill) is really his son, not Fernand's.
Edmund destroys Villefort by tricking him into making a confession in the present of hidden policemen. He bankrupts Danglars and kills Fernand in a duel. In the end, he has the Chateau D'If demolised and reconciles with Mercedes and Albert.
This ending differs substantially from the book.