We first meet Prince Septimus (Mark Strong) in the company of his brothers Primus (Jason Flemyng) and Tertius (Mark Heap) as they wait beside the deathbed of their father, the King of Stormhold (Peter O'Toole). They are waiting for a fourth brother, Secundus (Rupert Everett), so that the King can declare a successor. According to Stormhold tradition, princes are expected to kill each other off so that a sole remaining heir may inherit the throne. Faced with the dilemma of having four surviving sons, the King decides to address the matter of succession in a non-traditional way. Before doing so, however, he orders Prince Secundus to look out the window, providing Prince Septimus with the opportunity to eliminate his brother by pushing him from the tower. Just before his death, and with only three sons remaining, the King removes the Power of Stormhold from around his neck and throws it out into the night sky, dictating that "he of royal blood" who first claims and restores the ruby will become the next ruler of Stormhold.
Shortly thereafter, Prince Septimus successfully poisons his brother Tertius, but accidentally kills the Bishop instead of Primus. After providing Primus with the opportunity to bow out of the competition and thus preserve his life, a proposition the elder brother refuses, Septimus sets out on the quest for the Stone with six men.
Upon reaching the southernmost border of Stormhold, on the shore of an icy sea, he summons the Soothsayer who pointed Septimus' party south. Through a series of questions, Septimus discovers that the old man is working for Primus; after killing the traitor, Septimus consults the runes in order to determine a new path.
When Primus is killed after unwittingly walking into a trap set by the witch queen Lamia (Michelle Pfeiffer), Septimus becomes the last surviving son of the King. While in pursuit of the stone that would make him king, Septimus learns that it is currently in the possession of the fallen star, Yvaine (Claire Danes). The knowledge that the heart of a star can grant immortality only spurs Septimus' quest further as he decides to follow the tracks of his brother's murderer. Septimus, like the witch before him, tries to get information about the star from Ferdy the Fence (Ricky Gervais), but the merchant can utter only strange parrot-sounds after his encounter with Lamia, and taking these as mockery, Septimus stabs him.
Following the trail of the witch further, Septimus and his men find Captain Shakespeare's sky-vessel (Robert De Niro) on which the star and her companion, Tristan Thorn (Charlie Cox) had previously travelled moored at the side of a lake. During the attack on the vessel the prince's men get killed and Septimus himself has to flee, to continue his quest for the Stone and for the star's heart alone.
Again on the trail of Lamia he rides towards Wall, finds the remains of Ditchwater Sal (Melanie Hill) and eventually the hall of Lamia and her sisters, where Tristan is already lurking outside.
After forging a hasty alliance of mutual distrust, Septimus and Tristan decide to attack the witches by surprise. The prince tries to kill the servant of the witches first, but he realises that she is his long lost sister, Una (Kate Magowan). Changing his plans, he advances on one of the Lilim, Empusa (Sarah Alexander) instead, killing her after a fierce battle of flames and steel. Upon witnessing their sister's death, Lamia and Mormo (Joanna Scanlan) move to avenge her. With her voodoo doll Lamia manages to break the arm and leg of Septimus, and finally she drowns him in a pool of water.
Septimus can't rest in peace even after joining the rank of his ghostly brothers, for when Tristan attacks her, Lamia uses the doll again, reanimating the prince's dead body to fight the boy. After killing the witch Tristan accidentally finds the Stone and restores it to its original, red state, revealing to the ghostly brothers that he is the last remaining male heir of the Stormhold line. Finally, Septimus and his brothers can move on to the afterlife.