It is A.D. 117 and the Roman garrisons are struggling to contain the Picts, the Celtic inhabitants of the Scottish Highlands. The Picts under their king, Gorlacon, are perfecting guerilla warfare and are eliminating Roman outposts one by one. Centurion Quintus Dias is the only survivor of a Pictish raid and is taken prisoner. In the meantime, the Roman governor of Britannia wants to obtain favour with the central administration, hoping to secure a transfer back to the comforts of Rome. He dispatches the Ninth Legion to the front under General Titus Flavius Virilus, providing him with a mute female Brigantian scout, Etain.
As the legion marches north, they encounter and save Dias, who has escaped. Etain betrays the legion to Gorlacon: the Romans walk into a trap and are annihilated. Dias, with six others, elude death and capture. They learn that Virilus has been taken prisoner and set out to rescue him. They find the Pictish settlement and sneak in at night, but fail to break the general's chains. As they retreat, one of them kills Gorlacon's young son. The next morning, after the dead boy is burned, the general is given a sword and made to duel with Etain, who kills him.
The seven decide to return south via a long detour over the mountains, while Etain with a Pict detachment are sent on horseback to track and kill them, in revenge for the king's son. They eventually catch up with the fugitives, who have to jump off a cliff and into a stream. One is killed by arrows while two separate, pursued by wolves. Dias and his best fighter attempt a night raid on the Pictish camp, while Etain and her warriors do the same. Several men are killed. Dias and his two followers happen upon a hut in the forest and befriend Arianne, who lives there. She shelters them and when Etain comes, she confronts her while the Romans hide under the floorboards. The next morning they leave Arianne and find the closest garrison abandoned: an order on a wall informs them that Roman troops have retreated south, to Hadrian's Wall. As they see Etain approach, they set up a trap inside the fort. A battle ensues, Dias kills Etain, and he and one wounded companion emerge victorious. By chance they reunite with one of their lost companions, who earlier killed Gorlacon's son, and wounded another Roman soldier to leave as bait for a pack of wolves hunting them. Upon reaching Hadrian's Wall, the lost companion worries Dias, who says that he will report his crimes and the two men fight with Dias as the victor. Dias' other companion, in Pictish clothing, is shot by Roman soldiers by mistake. When Dias enters the camp he reports the situation to the governor. The governor has decided to have all Ninth Legion veterans killed, so that his record is not tainted by a military failure. The governor's daughter is trusted with making sure that Dias is also killed. Dias evades the attempt on his life and returns to Arianne in the forest.