The film opens with a flashback to 1803 in India, where [Sean Bean] as Richard Sharpe leads a patrol to an East India Company outpost. They arrive just before a group of supposedly friendly soldiers led by [Toby Stephens] as Major William Dodd launches a surprise attack, killing almost the entire garrison and making off with the payroll. Sharpe is wounded and survives by playing dead.
Fourteen years later, in 1817, after his wife Lucille has died from fever, [Hugh Fraser] as the Duke of Wellington summons Sharpe back to London and asks him to undertake one final mission: locate a man in India who is trying to uncover the identity of a turncoat officer advising a rebellious Maratha rajah. Sharpe initially refuses, wary of further danger, until he learns that the missing agent is his old comrade in arms and best friend, [Daragh O'Malley] as Sgt. Harper.
Sharpe heads for India, and on the way to report to General Burroughs, he passes Celia Burroughs [Lucy Brown], the general’s daughter, who is being escorted by soldiers. After a brief exchange, he rides on. He is soon attacked by marauders but is rescued by Harper.
Celia’s escort is attacked again by Dodd; she is captured and brought to the fortress of Khande Rao, the nominal leader of the revolt. Rao is not yet of age and is under the influence of a regent, his late father’s favorite concubine Madhuvanthi, and her lover, the now General Dodd, who plot to kill Rao before he comes of age.
Sharpe arrives at General Burroughs’ encampment, where the general is ill and command has passed to General Sir Henry Simmerson. Simmerson refuses to act without orders and reinforcements from Agra, but when Sharpe requests permission to infiltrate the enemy fortress, Simmerson is eager to let him risk his life.
Sharpe and Harper pose as deserters and are welcomed by the rebels. Sharpe befriends former French Colonel Gudin and his subordinate Bonnet, fellow veterans of the Battle of Waterloo who have been hired to train the troops. Meanwhile, Burroughs regains his health, dismisses Simmerson, and begins the siege. Sharpe discovers that Dodd has laid a trap for the British: he plans to breach the wall where he has mined it with barrels of gunpowder.
In a skirmish, some British soldiers are captured, among them Sergeant Shadrach Bickerstaff, who had clashed with Sharpe earlier. To avoid torture and execution, Bickerstaff betrays Sharpe. Sharpe and Harper are beaten and imprisoned, but Gudin and Bonnet, disgusted by the barbaric execution of prisoners, help Sharpe and Harper escape just as the British launch their assault. Gudin attempts to free Celia, but is murdered by Bickerstaff.
Sharpe and Harper successfully set off the gunpowder prematurely, causing a huge explosion that kills many defenders. Harper encounters and shoots Bickerstaff, while Sharpe goes off in search of Dodd. With the fortress fallen, Dodd prepares to flee. Madhuvanthi attacks him with a knife when she learns that he is abandoning her; he murders her.
Sharpe fights and defeats Dodd. Khande Rao is allowed to keep his throne after he signs a peace treaty, much to Sharpe’s disgust. Celia is reunited with her father, who tries to persuade Sharpe to stay, but he declines. With their mission accomplished, Sharpe and Harper ride off together.