In ancient England, warfare reigns between Uther Pendragon (Gabriel Byrne) and Cornwall (Corin Redgrave). To bring peace, Merlin (Nicol Williamson) secures the mystical sword Excalibur from the Lady of the Lake (Hilary Joyalle) and gives it to Uther. Impressed by this symbol of power and Uther's promise of land, Cornwall relents and recognizes Uther as king.
Cornwall hosts a celebration, where his wife, Igrayne (Katrine Boorman) dances. Uther cannot hide his lust and the fragile truce is broken. Uther besieges Cornwall's castle. He again asks Merlin to intervene. Merlin agrees to give him Igrayne but only if Merlin will receive the result of Uther's lust. That night, Uther's men draw Cornwall out of his castle and ambush him, killing him.
Merlin transforms Uther to resemble Cornwall. Uther enters the castle, makes rough love to Igrayne and impregnates her as Cornwall breathes his last. Nine months later, Igrayne gives birth to a son. Upon seeing his son for the first time, Uther vows to become a peaceful king and secure his kingdom for his son. Merlin, who has not been seen since the night Cornwall died, appears and takes the child, as per their agreement.
As Merlin disappears into the forest, Uther tries to stop him but is attacked by knights still loyal to Cornwall. Mortally wounded, Uther drives Excalibur into a stone, declaring no one will have the sword but him. Standing nearby, Merlin recites a spell that will keep the sword in the stone until Arthur is old enough to claim it. For the next sixteen years, no one is able to pull the sword from the stone.
Annually a joust is held to see who will be able to try; if any man succeeds, he will be crowned king. Sir Ector (Clive Swift) brings his son, Kay (Niall O'Brien) and Kay's squire, Arthur (Nigel Terry). When Arthur forgets Kay's sword, he goes to the stone and draws Excalibur for Kay to use in the joust. Incredulous, the crowd sees that Arthur has removed the sword.
Ector reveals that Arthur was brought to him as a baby by Merlin, who bid the man to raise Arthur and protect him. Many of the other knights refuse to recognize Arthur, who is not a knight, as their king. Only Leondegrance (Patrick Stewart) acknowledges Arthur as the rightful king. After a quick tutorial in the mystic arts, Merlin leads Arthur to Leondegrance's castle, which is besieged by the other knights.
Arthur fights bravely but wins the day when he admits that he is not himself a knight and kneels to ask one of the rebel knights, Uryens (Keith Buckley) to remedy the situation. Uryens recognizes Uther Pendragon's courage flows through Arthur's veins and knights him. That night, Arthur begins his courtship of Guenevere (Cherie Lunghi), Leondegrance's daughter.
Under Arthur, the kingdom is prosperous, the various fiefdoms are united, and many people flock to his gleaming castle, Camelot. The land's mightiest knights have joined Arthur's fellowship. These knights include Lancelot (Nicholas Clay), who had earlier taught Arthur an important lesson in humility. Lancelot, the best knight in the world, had defeated all of Arthur's knights; Arthur himself won only by calling on Excalibur's mystical powers.
The sword shattered because Arthur had misused it. Recognizing his sin, Arthur repented and the Lady of the Lake returned Excalibur to Arthur, whole. Lancelot swore his allegiance to Arthur that day. However, he spends little time in Camelot because of his love for Guenevere. In order to maintain his and Guenevere's honor, Lancelot stays in self-imposed exile. Arthur marries Guenevere, establishes the Round Table and peace unites the kingdom.
This fact is not lost on another of the castle's denizens, Morgana (Helen Mirren), Arthur's half-sister. As a child, she had watched Uther ravish Igrayne as her father (Cornwall) died. Now she hides a bitter plan to destroy Arthur and his kingdom. She goads Gawain (Liam Neeson) into accusing Guenevere and Lancelot of infidelity. He challenges the absent Lancelot to a joust.
Lancelot's squire, Perceval (Paul Geoffrey), is knighted so he can joust in Lancelot's place but at the last minute Lancelot arrives and defeats Gawain. Then he collapses from a self-inflicted wound, incurred the night before as he wrestled with his unchaste desires for Guenevere. Merlin has grown tired from helping men forge their kingdoms and accepts that soon science and the Christian God will take the place of magic.
Morgana rejects his conclusions and seduces Merlin into revealing all of his secrets, tricking him into reciting the ancient spell of "making", the very same spell Merlin had used to alter Uther's likeness to that of Cornwall. She learns the chant and uses it to imprison Merlin in his cave. Meanwhile, Guenevere has slipped into the forest to find Lancelot. They make love and fall asleep.
Arthur finds them and, rather than kill them, drives Excalibur into the ground between them. When they awake, the two adulterers are driven apart by grief. That night, Morgana takes the guise of Guenevere, has sex with a delirious Arthur and begets a child by him. Without Excalibur and despondent over the treachery of his queen and best knight, Arthur is an ineffective king and the land suffers.
Crops fail and pestilence spreads. Arthur sends his knights on a quest to find the Holy Grail, the cup Jesus used during the Last Supper; it will heal Arthur and the land. All of the knights search for the Grail for 10 years, and most of them die. Morgana has raised her and Arthur's son, Mordred (Charley Boorman), to hate Arthur. Together they lure Arthur's knights to their lair and hang the ones that cannot be enthralled from a tree.
Perceval is one of those knights. As he slowly strangles, he has a vision of the Grail. It asks him "What is the secret of the Grail? Who does it serve?" Perceval is too frightened to answer the question. However, the spurs on another hanged knight's armor severs the rope hanging Perceval, and he escapes. In the countryside, Perceval encounters a group of disheveled peasants who appear to be conducting a funeral for a child.
He recognizes Lancelot among them, barely recognizable with long hair, a beard and dressed in a monk's robes. Lancelot is now almost insane with disaffection over Camelot. Perceval begs Lancelot to return but instead they attack him. He barely escapes with his life but finds himself at the Grail Castle from his near-death vision. This time, Perceval understands the secret of the Grail: it is the faith that sustains Arthur, and through him the land flourishes.
Perceval returns to Camelot with the Grail. Arthur drinks from it and regains his health and the land next to him blooms to life. He visits Guenevere, who retired to a convent after her infidelity. Arthur forgives her and asks her forgiveness. She returns Excalibur to him, having kept it with her through the years. Mordred has challenged Arthur to the throne and has built a massive army.
Morgana's enchantments protect Mordred from any man-made weapon. They also keep her artificially youthful. On the night before the battle, Arthur prays for Merlin for help. As a wraith, Merlin appears in Morgana's tent and tricks her into undoing her spells and causing her to finally age, becoming an old hag. As she ages, smoke pours from her mouth, enough to cover the camp and the battleground.
When Mordred finds his mother as an old crone he strangles her. The next morning, Arthur's forces, though vastly outnumbered, meet and vanquish Mordred's army at Camlann, having the advantage of the smoke let loose by Morgana. They are aided by the timely intervention of Lancelot, who single-handedly kills many. Lancelot, however, succumbs to the wound he'd given himself in the forest when trying to requite his love for Guenevere, and collapses.
A grateful Arthur forgives him and Lancelot dies, having found peace. Only Mordred himself remains. He impales Arthur on a spear and Arthur stabs him with Excalibur, killing him. Dying, Arthur commands Perceval to take Excalibur and throw it into the nearest still body of water. Perceval takes the sword to a nearby lake but is unable to follow the command; he returns to Arthur saying that Excalibur cannot be lost again.
Arthur reassures his knight that the sword will be safe and will be presented to the next worthy king. Perceval returns to the lake and casts the sword in where it's caught by the Lady of the Lake and taken beneath the water. Perceval rides back to Camlann in time to see the Fates sailing away to Avalon with Arthur's body.