In medieval England, Galen is the awkward, not ready for prime-time apprentice of an aged wizard, Ulrich. One day, some travelers from the town of Urland (among them a boy named Valerian) arrive asking Ulrich to help them get rid of a great dragon that has been plaguing them. Ulrich agrees but dies in a mishap. Galen and Ulrich's other servant (Hodge) perform Ulrich's burial ceremony by burning his body and placing his ashes in a pouch, which Galen keeps. Galen also inherits the wizard's amulet, which he finds has begun to respond to his attempts at magic, so he goes with the travelers to Urland to deal with the dragon. He is told by them that King Casiodorus of Urland has been appeasing the dragon by periodically giving up an unmarried girl from the village. The girl is chosen by lottery, but the townspeople suspect that the lottery is fixed as none of the daughters of the wealthy have been selected.
When Galen is shown where the dragon lives, he gets an idea and casts a spell to block the entrance of the lair. It works, but he's also created an avalanche and everyone has to run for safety. With this questionable display of magic, Galen is taken to King Casiodorus and he utterly bumbles through another display, which only proves he is not a real wizard. The king doubts the dragon problem is over, so he takes Galen's amulet and puts Galen in the dungeon. The dragon indeed breaks out and there is a great earthquake, during which Galen is set free by the king's own daughter, Elspeth. Elspeth, like the townspeople, has suspected her father's unfairness in the lottery.
Sickened by the results of the dragon's wrath, Galen resolves to do what he can. He returns to the castle for the amulet and is discovered by King Casiodorus. Hoping to save his daughter, the king gives Galen the amulet. With dragon armor and new weapons, Galen fights with the dragon but is unsuccessful again. Fortunately, the amulet directs Galen to a real wizard and a way to put an end to dragon once and for all.