Leonidas follows his plan anyway, setting out with only 300 soldiers, whom he calls his personal guards to avoid needing the council's permission. Though he regards the mission as certain suicide, he hopes the sacrifice will spur the council to unite against Persia. On the way to Thermopylae, after seeing atrocities committed by the Persians, allied Arcadians join the Spartans. At Thermopylae they construct a wall to contain the invaders, using the bodies of Persian scouts as mortar.
As construction goes on, Leonidas meets Ephialtes, a hunchbacked Spartan in exile whose parents fled Sparta to spare him certain infanticide. Wanting to redeem his father's name, Ephialtes asks to join the fight; he warns Leonidas of a secret path the Persians could use to outflank and surround them. Though Leonidas sympathizes with Ephialtes's will to fight, he turns him down, as Ephialtes cannot properly hold a shield: this would compromise the Spartans' phalanx formation.
Before the battle, the Persian Captain demands that the Spartans lay down their weapons, but Leonidas refuses and slays him. The Spartans use their superior martial skills, long spears and heavy shields, and tightly-knit phalanx formation to break the much greater numbers of Persian light infantry and drive them over a cliff. The Spartans then survive an arrow barrage unscathed and easily defeat a Persian cavalry charge.
Xerxes personally parleys with Leonidas, offering him wealth and power in exchange for his loyalty and surrender, but Leonidas declines. Xerxes sends his elite guard, the formidable Immortals, to attack, but the Spartans successfully dispatch them, suffering a few casualties of their own. The Persians then send troops from all parts of their empire, including those with black powder bombs and war elephants, but all of these attacks fail. During these attacks, Astinos is killed, which drives his father Captain Artemis into a fit of rage.
Angered by Leonidas's rejection, Ephialtes defects to the Persians and informs them of the secret path. Realizing Ephialtes's treachery, the allied Greeks retreat and Leonidas orders Dilios to return to Sparta to tell the Council of their sacrifice. Though Dilios had recently injured his left eye in combat, he is still fit for battle, but Leonidas decides to use Dilios's gift for storytelling to appeal to the Spartan council. Though reluctant to leave his brothers behind, Dilios leaves with the allied Greeks.
In Sparta, Queen Gorgo, Leonidas' wife, agrees (under duress) to a sexual encounter with Theron, before which he promises his help in persuading the Spartan council to send reinforcements to Leonidas. However, following her address to the Council, Theron publicly betrays the Queen by accusing her of adultery, prompting the councilmen to cry out in outrage, and enraging Gorgo to the point of killing Theron in a fit of anger. The xiphos that Gorgo uses to kill Theron pierces his purse, spilling Persian coins from his robe, revealing his role as traitor, and the Council agrees to unite against Persia.
At Thermopylae, the Persians use the goat path to outflank the Spartans. Xerxes's general demands their surrender, again offering Leonidas titles and prestige. Leonidas seemingly bows in submission, allowing Stelios to leap over him and kill the general instead. Furious, Xerxes orders his troops to attack. Leonidas rises and hurls his spear at Xerxes, cutting the King on the cheek, thus fulfilling an earlier promise to "make the God-King bleed". Xerxes, disturbed by the reminder of his mortality, watches as a massive barrage of arrows kills all the Spartans. Moments before his death, Leonidas pledges his undying love to Gorgo.
Concluding his tale before an audience of Spartans on the edge of the battlefield a year after Thermopylae, Dilios relates how the Persian army has suffered desertions, out of fear and the heavy casualties they suffered at the hands of a mere 300 Spartans. Word of their valiant resistance spreads across Greece, inspiring the different city-states to unite against the Persians. Now, the Persians face 10,000 Spartans and 30,000 free Greeks. Although still outnumbered three to one, Dilios declares that the Greeks shall be victorious and praises the sacrifice of the 300. He then leads the Greeks in a charge against the Persian army at the Battle of Plataea, the battle that would end Persia's invasion of Greece.