Britannia, 62 A.D. The film opens showing a Celtic village of horsemen. A young boy named Milo walks out of his tent to discover his people fighting off an invading horde of Romans. Milo fearfully sees his father fight bravely before he gets killed by Roman soldiers. His mother pulls him away from the chaos, only to get hit by a horse riding in. Leading the Romans is Senator Corvus (Kiefer Sutherland). He slashes Milo's mother across the neck as the boy lies on the ground and sees this, and then he orders the rest of the captured horsemen and villagers to be killed. The Romans pile their bodies on top of each other, including Milo, whom they believe to also be dead. The boy later pulls himself out of the pile and wanders. He is later found and taken by a group of men.
17 years later (August 79 A.D.) in Londinium, the capital city of Britannia, a slave owner named Graecus (Joe Pingue) watches with boredom as several slaves fight against each other. He demands to see something new. The slave handler tells Graecus about a new gladiator known only as 'The Celt'. In enters an older Milo (Kit Harington), somberly walking before the crowd. He is pitted against three other gladiators, and in seconds, he swiftly kills each of them without mercy. Graecus is now intrigued.
The slaves are escorted alongside Princess Cassia (Emily Browning) and her friend Ariadne (Jessica Lucas) in their carriage coming from Rome. The carriage hits a bump on the road, causing a horse to turn over and fall on its side. Cassia runs to the horse's side as it writhes in pain. Milo tells the slave keeper Bellator (Currie Graham) to unchain him so that he may tend to the horse. He doesn't do so until Cassia allows this. Milo runs to the horse and tells Cassia to put pressure on its side so it doesn't feel the pain. He then breaks the horse's neck to put it out of its misery. Ariadne is horrified by this but Cassia knows Milo did the right thing.
Upon their return to Pompeii, Cassia takes a good look at Mount Vesuvius. She travels to her family palace which sits on the lower slopes of Vesuvius. There, she reunites with her parents Severus (Jared Harris) and Aurelia (Carrie-Anne Moss), and the man who tends the horses, Felix (Dalmar Abuzeid). Senator Corvus, accompanied by his lieutenant Proculus (Sasha Roiz), arrives from Rome with business to make with Severus for the new Roman emperor Titus. They plan to reconstruct the city, yet Corvus also has his eyes on Cassia, whom he had met during her stay in Rome, unbeknownst to her parents.
Meanwhile, Milo is taken to the dungeon with the rest of the slaves. As he quietly eats, a larger slave confronts him, knowing Milo to be the one who killed his brother. Milo acts quickly and takes down the antagonist before he can make any further moves. This catches the eye of the African gladiator Atticus (Adewale Akkinouye-Agbaje).
That evening, Felix is riding his horse through a field close to Vesuvius. The ground begins to shake and rumble. Frightened, the horse throws Felix off his back. The earth begins to crack. Felix starts to run but a chasm opens beneath him and he falls to his death.
In the Pompeii arena the next morning, the gladiators are in training. Atticus is on his last day as a slave, and once he fights in the coming day, he will be free. He calls out for a challenger during a test fight in the arena, and Milo answers. The two of them duel with their wooden swords in front of the other gladiators. Milo has Atticus pinned to the ground when the angry slave from before draws a dagger to stab Milo in the back, but Atticus kicks the man away. Milo sees the dagger lying next to the man. Later in their cells, Milo asks Atticus why he saved him. He responds that a gladiator should not die with a knife in their back. Their death should come from the front. Suddenly, the earth starts to shake. Atticus reminds Milo it's coming from Vesuvius.
That evening, the two men are taken into the palace during a celebration. A woman pays for time with Atticus (it's implied to be sexual) while Milo is taken to see Cassia. Felix's horse returned, distressed by the earthquakes. She allows Milo to privately tend to the horse, but she joins him. He mounts it, and after a while, she takes his hand and hops on the horse's back. They ride the horse out of the palace, getting chased by Bellator and the guards. Corvus nearly kills Milo, who is now face-to-face for the first time since he was a child with the man who slaughtered his people, but Cassia has him spared by saying she would be grateful for Corvus's mercy. Milo receives 15 lashes as punishment, with Cassia, Ariadne, and Severus among those forced to watch.
Atticus tends to Milo's wounds by pouring wine on his back. The earth shakes again, which Atticus says is a sign from the gods. Milo believes this to be true after seeing Corvus again. He believes he has been kept alive long enough for something bigger.
The following day (August 24, 79 A.D.), the battle in arena takes place. To the surprise of the gladiators, they are not engaging in single combat, but rather, they are forced to fight dozens of Roman soldiers while being chained to a pillar. Corvus gives the word and commences the fight. The Roman soldiers charge toward the gladiators. They raise their shields as the soldier hurl spears their way. They continue charging, sparring with them using their swords. Together, Milo and Atticus fight back, breaking the pillar to crash down on the Romans until they are the only two survivors. Meanwhile, Corvus tells Cassia that Severus gave him consent for her hand in marriage. Aurelia is shocked and Severus says he did no such thing. Corvus blackmails them by saying that he will have her whole family hung unless she complies. Regretfully, she does. Milo then stands on the platform holding a scepter with the Roman eagle on it, crying "I will not bow to the power of Rome! I spit on it!" He breaks the scepter in half and hurls the pointed end at Corvus, but Proculus breaks it away with his sword. Milo and Atticus are nearly sentenced to death by a firing squad of arrows, but before Corvus can give the thumbs down, Cassia intervenes with a thumbs up. And then, the earth rumbles yet again... right before Vesuvius finally erupts. The arena crumbles, with many people falling or getting crushed by the lava stones. The rest of the citizens retreat while Cassia is taken away. A pillar falls onto the balcony where Corvus, Severus, and Aurelia are standing.
As a hole opens in the ground of the arena, Milo pushes Proculus into it, bringing them to the dungeon. Milo releases all the prisoners to chase after him. Proculus escapes and shuts the door, leaving Bellator behind to get beaten to death. Atticus is impressed with Milo's work.
On the balcony, Severus and Aurelia wake up, severely weakened. She spots Corvus lying unconscious, telling Severus to kill him. Severus takes a knife and almost sticks it into Corvus until the man wakes up. He tells Severus he will no longer do business with him, and then impales him. He leaves with Proculus. Severus kisses Aurelia's forehead and takes her hand before he dies. Not long after, Milo finds a barely alive Aurelia, who tells him to find Cassia at the nearby villa to rescue her. She dies afterward.
Vesuvius starts spewing fireballs that rain down on Pompeii, setting the city ablaze as the citizens run for the harbor. Graecus pays for his passage on a ship, but a fireball lands on his ship, sinking it as it sails out of the harbor. Other citizens are killed in the chaos and they are unable to escape the fireballs. Corvus and Proculus also kill people as they try running away.
Milo runs to the villa where Cassia and Ariadne are. The roof crashes down, almost killing Cassia. Milo breaks the door down and rescues her. Ariadne brings her water as she is coughing. The three of them make it out of the villa before it is destroyed. The earthquakes happen again, causing the cliff near the villa to break. Ariadne runs toward Milo and Cassia, with the latter reaching out to grab her friend, but it is too late when Ariadne falls over the edge to her death. Milo gets Cassia out of there.
Atticus is among those running to the harbor. The water starts rising, moving away from the shore. People fall off the ships or off the planks. A tsunami forms caused by the volcanic earthquake, heading toward the city. Atticus yells at everyone to run in the opposite direction. A mother is separated from her daughter and cannot reach her with everybody pulling her away. Atticus rescues the girl and guides her mother to safety, reuniting the two.
Milo and Cassia reunite with Atticus, happy to see them both. He informs them that they can no longer make it to the shore, so they resolve to head south for the hills where most of the people are now fleeing to. Knowing they can't move quick enough on foot, they run back to the arena to get horses. Cassia finds the bodies of her parents, holding hands. As she mourns them, she is capture by Proculus. At the same time, Milo and Atticus evade the Roman soldiers. They find Corvus tying Cassia to his cart, ready to make off with her, leaving the soldiers to kill Milo. Together, he and Atticus easily kill all of them before Corvus flees. Atticus tells Milo to go get Cassia while he stays to fight Proculus. The two gladiators bid each other goodbye and promise to see each other again soon. As he leaves, Atticus battles Proculus in a sword fight. Despite putting up a good fight, Atticus is impaled with Proculus's sword. "A barbarian does not die equal to a Roman," he snarls. Atticus breaks off the sword and takes Proculus's wrist with the broken edge, raising it slowly to his neck. "Let's see if a Roman can die equal to a gladiator. A gladiator does not beg!" he cries before sticking the broken edge into Proculus's neck, killing him.
Milo rides a horse as he chases after Corvus through the streets. Cassia breaks off a piece of wood from the cart and unlocks herself. She hops off the cart before Corvus gets thrown off when it hits a bump. Milo runs to Cassia, but Corvus almost slays both of them. Milo finally fights Corvus in one last duel. He stabs Corvus in the arm as Vesuvius erupts one more time, sending a fireball crashing down. The smoke fills up, and Cassia sees a figure emerging from it. It's Corvus. However, Milo tackles him and brings him down. Corvus reaches for his blade but Cassia chains him to a rock. Milo reminds Corvus that he is the one who killed his family, yet he chooses not to directly kill Corvus. He rides off with Cassia as the final eruption sends a wave of ash and fire all across the city. Corvus screams as he is burnt to a crisp, while Atticus embraces his fate, knowing he will die a free man.
Milo and Cassia manage to ride out of the city toward the hills, but the horse throws Cassia off, too weak to keep going. Milo knows the horse can't take both of them so he tells Cassia to go on without him. She refuses, not wanting to spend her last moments running. The two look into each others eyes and share their only kiss, mere seconds before they too are consumed by the ash cloud.
The film ends with a shot of Milo and Cassia's bodies encased in solid magma, still locked in a passionate embrace.