It is the late 18th century, in South Carolina. Benjamin Martin (Mel Gibson) is a veteran of the 1754-1760 French and Indian War and a widower raising his seven children (four sons and three daughters) on his farm. Gabriel (Heath Ledger), the eldest, is anxious to join the American forces fighting the British in the Revolutionary War, even if it means doing so without his father's permission. Ben, who knows from first-hand experience the horrifying carnage that war presents from his experience in the French and Indian War, wants to discourage his son from participating.
When South Carolina votes to go to war, Gabriel joins the Continentals against his fathers wishes. He returns home after two years in 1780, stumbling wounded into the family home, carrying dispatches between commanders. That night, a skirmish between the British Loyalists and the Continentals (the Battle of the Waxhaws) wakes the Martins and they give care to the wounded of both sides the next morning on the porch of their house which is overseen by a friendly Loyalist officer. But just then a platoon of British soldiers - the ruthless Green Dragoon cavalry - approach the house and kill all the Colonial wounded, burn down the house and take Gabriel into custody as a spy, intending to hang him. Ben's 15-year-old (and second) son Thomas (Gregory Smith) is killed trying to free Gabriel as he is taken prisoner, shot by the ruthless and cold-hearted leader of the Green Dragoons, Colonel William Tavington (Jason Isaacs) even though the boy posed no real threat.
An enraged Ben sets about to free his son Gabriel, with the help of his two younger sons Nathan and Samuel (Trevor Morgan and Bryan Chafin). Armed with several muskets, the three of them manage to ambush and kill many of the British troops holding Gabriel (with Ben telling his boys to aim first for the officers so the others will be disoriented). While their brother is freed, the boys are all horrified -- particularly Samuel -- at their first glimpse of their kindly father ferociously killing men with his knife and tomahawk. Gabriel rejoins the cause against his father's will again stating it is his duty as a soldier. Ben decides to join the fight later when he catches up with Gabriel and they report together, leaving the rest of the children in the care of their aunt Charlotte (Joely Richardson), the sister of Ben's deceased wife.
Ben quickly concludes the poorly trained and ill-experienced Colonials cannot hope to beat the British in set piece battles - shooting at each other in open field, as was the custom of warfare at the time - because the British are too well trained and well armed as the watch a battle from a distance (the Battle of Camden). Continental Army Colonel Harry Burwell (Chris Cooper), having fought alongside Ben in the French and Indian War, asks Martin to organize a militia designed to keep British General Cornwallis in the south until the French navy arrives with 10,000 soldiers as reinforcements. French Officer Jean Villeneuve (Tchéky Karyo), is present to help train the militia having witnessed his wife and daughters burned alive by the British army while aboard a ship.
Over the next few months, the South Carolina militia is called up and adopts guerrilla tactics, using elements of surprise and attack, to harry the British and Loyalist supply lines (including the capture of Lord Cornwallis' personal effects and prize Great Dane's and the destruction of a supply ship in front of a ball at Middleton Place for the British officers). To combat the militia, General Cornwallis - who had previously berated Tavington for his callousness towards civilians and executing surrendering troops, - authorizes Tavington to pursue more brutal tactics in order to draw Ben and rest of the Colonial rebels out into the open to be defeated. Tavington tracks Ben's family to their refuge with Charlotte and burns down her plantation. However, the family escapes, and are led to a safe haven by Gabriel. During this time, Gabriel marries Anne Howard (Lisa Brenner), a wartime marriage during a furlough. Soon after the marriage, returning home, Anne and her family, along with all the townspeople, are burned alive whilst locked in the church. The orders for this horrific act came from Tavington.
When a furious Gabriel discovers what has happened, he and a small group of men ride to engage the Dragoons at a small camp. During the fight, many men on both sides are killed, leaving Gabriel and the Reverend to face off against Tavington. A few others escape with major wounds. The Reverend is shot, but throws his ready loaded musket to Gabriel, who shoots Tavington, who promptly falls to the ground. However, as Gabriel approaches Tavington's body with his knife in his hand to stab him, Tavington turns over and stabs Gabriel in the stomach with his sword. As Tavington escapes, Benjamin approaches the scene in time to find Gabriel dying on the ground. Ben is devastated and his zeal for combat extinguished. However Ben soon returns to the Continentals, carrying the American flag high, promising himself to stay the course.
In the final battle (the Battle of Cowpens), Colonel Harry Burwell and Villeneuve help Benjamin defeat the British, by using the militia (who are held in low regard by the British officers) as a feint. Although Col. Tavington has been told by Gen. Cornwallis not to intervene until ordered, Tavington and his Dragoons charge into the fray.
Soon Benjamin and Tavington are able to face off, one on one. As Tavington gains the upper hand in their vicious fight, and the pain of his wounds brings Benjamin to his knees, Tavington mutters, "Kill me before the war is over, will you? It appears, you are not the better man." As he swings his sword ready to behead Benjamin, Ben dodges and stabs him with a bayonet-fitted musket in return, picks up a detached bayonet lying nearby on the ground and replies, "You're right... my sons were better men." Ben stabs Tavington in the throat, killing him.
Meanwhile, a disappointed General Cornwallis (Tom Wilkinson) sounds the retreat as the rebels celebrate. As Ben narrates, we are told that the British were defeated later that year at the Siege of Yorktown in 1781 when the French finally arrived to blockade the British. Cornwallis and his aides are holed up in a house, bombarded on both sides by Continental and French fire. A dumbfounded Cornwallis, realizing his defeat, declares: "Everything will change....everything has changed". The final scene features Martin and his family arriving at a site where the foundations of homes lie. Occam tells Ben, "Gabriel said that if we won the war, we could build a whole new world. Just figured we'd get started right here, with your home." Benjamin smiles as he replies, "Sounds good", before shaking hands with Occam and walking with his family towards their new, free future.