George (James Purefoy), a knight returned from the Crusades, wishes to retire from soldiering, find a wife, and settle on "an acre of land with two head of cattle." To conclude the transaction, he agrees to help the land's owner, King Edgaar (Simon Callow), whose daughter Princess Lunna (Piper Perabo) has disappeared. Also in search of the princess are Garth (Patrick Swayze), betrothed of the unwilling princess, and the mercenary El Cabillo, a title which passes through different men, the first of which is played by an uncredited Val Kilmer.
The princess has been kidnapped by a female dragon, which lays an egg and then apparently dies a few days later. Rather than escaping, the princess decides to guard the egg, which she believes holds the last dragon on earth. She names the unhatched dragon "Smite". George's father Sir Robert (Paul Freeman), a previous friend of King Edgaar's and an amputee following his own battle with the mother dragon, gives his son George a "dragon horn", which "sounds a note only a dragon can hear".
When George encounters the princess, he attempts to destroy the egg, but she knocks him unconscious each time he tries. In company with their companions, they transport the egg by wagon back to her father. Along the way they stop at a convent; Lunna's cousin is a nun there, and one of the friars is an old friend of George. The princess' betrothed, Garth, catches up with them at the convent, and she says she will not marry him because she does not love him. Garth kidnaps her to force her to marry him; she is part of his plan to take over the kingdom.
Mercenaries arrive, led by El Cabillo, who then reveals himself to the group as Tarik (Michael Clarke Duncan), a Moor who had been a close friend of George during the Crusade. El Cabillo's men revolt against him, wishing to capture the Princess and claim the reward themselves. While they are fighting, the baby dragon hatches, the monk Elmendorf is killed saving the Princess from a flying spear, and King Edgaar's men and Sir Robert's men arrive to join the fray. During the fight, Garth and George are forced to collaborate against a mutual enemy: the former second-in-command of El Cabillo, the leader of the mutiny. They fight him off together, but occasionally strike at each other. The confused melee is interrupted when the wall of the keep explodes. The mother dragon has returned.
The combatants flee. Debris prevents George's escape. In the castle courtyard the other combatants listen in silence to the very loud noises of the unseen dragon inside the keep. Princess Lunna fears the worst for both George and the dragon.
Within the keep, the mother dragon is preoccupied with her child. George remains still to avoid detection by the dragon. George notices that a lance protrudes from the mother dragon's side. It is his father's lance. George slowly approaches the lance and takes hold. He asks God's forgiveness for what he must do and promises to make this as painless as possible for the dragon.
A roar is heard by the listeners in the courtyard. George emerges from the keep with a bloodied lance. The men are overjoyed, believing that George has slain the dragon. Princess Lunna is not. Overcome with sorrow for the dragon's death and angered by George's betrayal, she flees on horseback. King Edgaar gives George his blessing to marry the princess, and George pursues her on the king's horse. As they race beside a large body of water, they are joined by Garth. Garth knocks George from his steed and they fight. Garth has the advantage, and raises his sword for the killing blow. The mother dragon leaps from the water and swallows Garth whole.
The Princess Lunna realizes that George did not kill the dragons. They kiss and live happily ever after.
Whose cousin was a nun at the convent the companions stopped at?
Lunna's