The film begins with a voice-over monologue by vampire Selene, telling the story of the lycans and vampires. It has been 20 years since the war between them has begun (set several years before the first Underworld movie). Viktor (Bill Nighy) has built up an army of vampires to fight off the threat and have begun the process of exterminating the lycans. It appears that when someone is infected by a lycan, they transform into werewolves, but do not change back and appear to behave like vicious animals rather than people. However, one day, in a prison cell, Viktor hears the cries of a human child, and investigates. What he discovers is a human child born of a lycan later named Lucian. Viktor contemplates killing the child, but could not bring himself to do it.
Lucian grows up, and appears to be stronger and more focused than others of his kind; this is evident when Viktor tests him by making him fight vampires. Viktor decides to make more of Lucians kind (the new lycans that have human form). Viktor uses Lucian to make more like him by starving him and letting him feed on human slaves. The ones that survived became the new lycans, a new slave race to serve the vampires. The vampires think they have control of the lycans, but this may not be the case for long.
Note: there are two types of were-wolves in this film, ones that are permanently in wolf form and wild, and ones that can transform when its a full moon and are in service to the vampires. I will refer to the former as wolves, and the latter as lycans.
Cut to the present, a horseman is riding through the woods at night, pursued by something. At the castle, Viktor is discussing politics and finances with his advisors, Coloman (David Ashton) and Orsova (Elizabeth Hawthorne). The wolves have been attacking the human slaves, which Viktor replies with some variation of I dont give a crap, however, human slaves are their principle source of food and income (the human nobility pay Viktor for protection against the wolves), so they have to take action and hunt down the creatures.
Back with the rider in the woods, wolves are pursuing the rider through a dark canyon but he is able to fight them off but there are an increasingly larger number of them. The situation looks grim but as the rider approaches the castle, the other vampires are prepared. They arm huge crossbows and mow down the lycans. One of the wolves lunges at the rider but is killed mid-air by a crossbow bolt from Lucian (who is still serving the vampires).
The rider removes his helmet, and it turns out to be Sonja (Rhona Mitra), who is less than grateful to Lucian for saving her life, and just bosses him around. Viktor on the other hand, believes in giving credit where it is due. Viktor asks if Lucian minds killing his own kind, who replies that they are just animals and not his own kind. Lucian stares at Sonja, and Viktor reminds Lucian that is a servant, and should keep his eyes on the ground.
Sonja and Viktor argue because he wants her to stay in the castle and leave the wolves to the death-dealers but Sonja is a great fighter and very stubborn. Sonja is Viktors daughter, and a council member, and Viktor does not want her to come to harm, and is grooming Sonja to become an elder; but she is endangering her position on the council by being a renegade and disobeying Viktor and missing council meetings.
Outside, Lucian is burning the corpse of the dead wolf which he killed when it was chasing Sonja through the castle gates. As the corpse burns, it changes back into human form. The other lycans are being whipped, beaten, and forced to work for the vampires. One vampire guard gets a little too enthusiastic with the whip and Lucian tells him to stop. The vampire takes this badly, calls Lucian a dog, and leaves angrily Lucian is Viktors favourite servant and holds some power in the work yard. The other lycans seem to respect him.
In the council chambers, Viktor is speaking with the other Coloman and Orsova regarding how to handle the situation with the wolves. Viktor doesnt think of it as such a big deal but Coloman note that the wolves are killing humans, which is destroying their main food source. Although they dont seem to be killing off too many humans, the fact that the vampires of this region are losing their crop, makes them look weak to the human nobles, who give the vampires people (for food) and money/gold for protection. Coloman suggests letting the lycans patrol outside during the day (since vampires cant do so). Viktor is very much against this suggestion as it would be granting the lycans more freedom, and increase risk of losing control. Coloman suggests making a privileged class of lycans, with better accommodations, rations, and status, led by a lycan that they can trust Lucian; this way, they will have one of the lycans controlling the others, and have the ability to control the wolves during the day. Viktor is still against the idea, but without Sonja there to support him, he has no choice but to take the suggestion under advisement. The human nobles will arrive the next day and Viktor will have to make his decision soon.
Outside, the work shift is over, and the lycans are herded back into their cages. Lucian sneaks off, and gets into the sewers. He takes these passages and gets outside the castle, climbing up to a ruined sentry post, where he is met by Sonja. It turns out that they have been lovers the whole time, and Sonja acts cruel to Lucian in public to prevent suspicion. They kiss rather passionately. After some lovemaking Lucian asks if Sonja would go with him if he leaves (escapes). Sonja doesnt think its possible as he would be hunted down by Viktor and his army. Lucian reveals a crude key that he has made to remove the collar on his neck. All lycans in servitude have a collar with spikes pointing inward to prevent them from transforming, if they do, they die from impaling themselves on the spikes. If Lucian can get out of the collar, he would be able to fight the Vampires and escape. Sonja does not want Lucian to risk his life, but he believes that his kind should be equals, not slaves as both lycans and vampires are descendants of the Corvinus bloodline, brothers that took different paths to immortality.
When Sonja and Lucian part, they are spotted by Tannis, one of Viktors lieutenants, sent to watch over Sonja. He realizes that Sonja and Lucian are having an affair, but does not tell Viktor.
The human nobles arrive and Sonja goes out to escort them in. Lucian is worried and does not want her to go. Tannis has orders from Viktor for Sonja to not leave the castle walls, but she just ignores him. As Sonja leaves, Tannis sees Lucian, and subtly lets Lucian know that he knows their secret.
Sonja and more vampire guards arrive to escort the human nobles and their slaves, and they hear howling in the distance. Lucian hears the howling and knows that there are more wolves than Sonja and her men can handle. Lucian tries to warn the others, but no one listens to him, so he runs out to save Sonja, disobeying orders and knocking out some guards along the way.
Cut back to Sonja, wolves are pouring in from every direction. The vampires are holding them off, but there are too many. One of the human slaves appears to fight wolf and actually survives its Raze (Kevin Grevioux) from the first film, but as a human. Sonja is injured, but Lucian arrives in time and defends her. Lucian uses his key to open his collar and transform. The transformed Lucian gives off a deafening roar that drives off the wolves. Raze sees this and appears impressed. Viktor and his men arrive and Lucian changes back to human form. It is forbidden for a slave lycan to transform and Lucian is beaten and arrested, even though he saved Sonjas life. Sonja tries to plead with Viktor, but gets nowhere.
Back at the castle, Viktor feels betrayed. Lucian is sentenced to a severe lashing by the same guard that he had angered earlier. The whip is tipped with huge hooks and tears up Lucians back. Sonja hears Lucians screams of pain and is devastated.
After his punishment, Lucian is dragged back into his cage, next to a prison cell with the human slaves. Raze is in the cage next to Lucian, and gives him water to drink.
Viktor is suspicious of Sonja for pleading to Viktor to release Lucian, but she claims that she was just showing gratitude for saving his life.
Lucian and Raze talk, and Raze notes that he saw what happened in the forest- that the wolves appeared to obey Lucian when he transformed. Lucian begins talk of escape and freedom and the human slaves, although afraid, are intrigued. Just then, Sonja appears and Lucian and tells her that he has to leave. There is no one else that the two can trusts, except maybe for Tannis, since he knows their secret but did not tell, it means that he wants something. Lucian asks Sonja to speak to Tannis and figure out what he wants.
Viktor meets with the nobles who are expected to pay tribute for protection from the wolves. This years tribute is low, and Viktor expects more due to increased attacks from the wolves. One of the nobles is fed up and proclaims that Viktor and his army are losing ground, and can barely keep the wolves from their own door. Viktor kills the nobleman and sustains control through fear.
Down in the dungeons, the vampires are amused by the sight of the lycans fighting with one another over the food given to them. Lucian cant take any more of this and rallys the lycans for rebellion.
In Sonjas room, she has a flashback of Viktor giving her a medallion, the same one featured in the first two films. Sonja goes to Tannis and, holding a dagger to his throat, asks him why he did not reveal the truth to Viktor. Tannis explains that Viktor isnt good with taking bad news, and that it is not yet the time for him to use this information to his advantage. Tannis wants a council seat, and there are only 12 seats and vampires dont die, which means that he cannot get onto the council unless someone relinquishes their position. Sonja agrees to give Tannis her seat on the council for his help.
Sonja goes to Lucian and tells him that Viktor plans to execute him the next evening, and that he has to leave at dawn if he is to survive. They agree to meet in the forest in three days. As Tannis walks by, he tosses a collar key to Lucian.
The human slaves are brought out and are purposely bitten by a transformed lycan to change them into lycans so they can serve as slaves and guards for the vampires. Lucian talks to the newly transformed lycans (including Raze) and talks them into joining him in escaping/revolting.
As the guard (the one who whipped Lucian) comes in to check on the slaves, Lucian removes his collar, transforms, and shreds him. The slaves break free, subdue their guards, and make a break for it. The guards notice this pretty quickly and turn their crossbows on the lycans. Many of the lycans are killed before getting very far, and many others are separated by a barrage of arrows. Lucian has no choice but to escape with the few slaves that got free, but vows to return for the others. Lucian continues to charge outward, running into two vampires and throwing them and him out a window and out into the open. As they fall from the top of the castle, the guards turn to dust (its daytime), and Lucian lands safely on the ground. The few other lycans follow Lucian and make their escape.
Viktor is rather angry and notices that the collars were unlocked. He had given Tannis the key that Lucian had made, and believes that Tannis has betrayed him, but he claims that he had locked the key in the armory and asks Viktor to check to prove his innocence.
Outside, Lucian and the four other lycans have made it to the surrounding forests, but instead of fleeing, Lucian plans to return to the castle to save his brethren. They have no weapons and are few in number, so Lucian asks Raze to lead him back to the noblemans estate so they are get the supplies and soldiers they need.
At the castle armoury, Tannis finds the key that he had put away. Viktor believes that Lucian must have made another one and Tannis gets off the hook.
Cut back to Lucian and the other lycans. Lucian has freed the human slaves that belonged to the nobleman (the one that was killed by Viktor). Lucian asks them to volunteer to help them, and if they choose to, be granted immortality through becoming a lycan. The freed slaves agree and they prepare for battle making weapons and arming themselves. Lucian sends Raze to other estates to recruit more soldiers.
Viktor is back at the castle, pacing about and steps over a loose metal grate, the same one Lucian used to sneak out and meet with Sonja. He follows the passageway to Sonja and Lucian's secret meeting place.
Back to Lucian, he heads into the woods and meets/recruit the wolves. The wolves do not attack Lucian and seem to listen to him.
Viktor goes to Sonja's room, and questions her about Lucians escape. Viktor does not believe her and drinks her blood to see her memories. Viktor goes into a complete freak-out as he realizes that his daughter has betrayed him. Sonja is imprisoned in her chambers and Viktor storms out.
At the lycan camp, Sonja is supposed to meet Lucian, but her absence worries him. Lucian insists on waiting for her, but the others do not want to wait; the longer they wait, the more likely they will be found.
At the castle, the council have found out that Lucian is rallying the slaves and making more lycans, and the council pressures Viktor to do something about Lucian. Viktor knows that Lucian will return for Sonja, and prepares for the inevitable attack. Viktor sends one of Sonjas friends to tell Lucian that Sonja will be executed soon. Lucian knows it is a trap and heads back to the castle alone, giving Raze command of the troops (lycans and wolves).
During the night, Lucian sneaks into the castle, dispatching the guards one by one. He reaches Sonja and they attempt to escape together. Lucian and Sonja run through the sewers but encounter heavy resistance. Up top, Viktor and his men pour oil into the sewers and set the tunnels on fire. Lucian and Sonja jump through a small hole in the ceiling and battle the vampires. Lucian is outnumbered and getting pummelled but Sonja is doing a good job fighting them off (partly because they want her alive). Viktor comes in and fights Sonja, and she has no choice but to defeat her father. Sonja pleas for Viktor to release Lucian for the sake of her child (shes pregnant with Lucians child). Viktor grabs Sonjas dagger and subdues her. Viktor sees the child as an abomination and believes he has no choice but to punish her as well. Lucian regrets escaping but Sonja tells him that it is not his fault, and that the choices are her to make.
Sonja and Lucian are dragged out for a trial. The guards shoot two silver arrows into Lucian's back, so that he cannot transform. Sonja is convicted of treason by the council, and even Viktor declares Sonja as guilty, even though it visibly pains him to do so. Lucian pleads with Viktor to release Sonja, but its no use. Sonja and Lucian are brought into a chamber where Sonja is strung up on a pillar and forced to watch as Lucian is chained and whipped severely. The whipping ends and all the vampires leave. It will be dawn soon and Sonja will be executed by sunlight. The ceiling opens and Lucian tries to break free to save her, but cannot because he still has the two silver arrowheads buried in his back. Sonja says goodbye and is instantly fried by sunlight. Viktor is grieving rather heavily as well.
At sunset, Lucian is still chained to the floors of the sunlight execution room. Viktor comes in to see the remains of his daughter but does not notice the full moon.
Lucian is furious at Viktor and the moonlight gives him the strength he needs to force the arrowheads from his back and transform himself. He then breaks free, grabs Sonjas medallion and tries to escape. Lucian is being pummelled with arrows and is severely injured, but is able to let off a vicious roar, signalling his men, before weakening and returning to human form.
Viktor gets his knife and is prepared to kill Lucian but notices that something is approaching a hoard of lycans and wolves charging towards the castle. The vampires man their crossbows and fire but there are just too many of them. The wolves climb up the walls easily and quickly overruns the vampires. Raze finds Lucian and helps him. Lucian tells Raze to free the others. Raze frees the other lycan prisoners and give them the keys to their collars. The lycans transform and fight their way out.
Viktor gets Tannis to retrieve the other elders (hibernating in their coffins) and then heads out to face the lycans. Viktor proves to be a very powerful warrior and takes down many lycans. Lucian spots Viktor and heads right for him.
Down in the sewers, Tannis has the elders in a boat and row them to safety.
Lucian catches up with Viktor and they fight. Both of them fall into a pit, hanging from chains. Lucian is able to weaken Viktor with sunlight (he broke a hole through the wall) and ties him up in the chains. Viktor says he should have killed Lucian long ago, but is interrupted by a sword through his mouth. Lucian, thinking that he has killed Viktor, tosses his chained body into the water.
Outside, Raze claims that its finished, but Lucian says it has just begun. This is the beginning of the second vampire-lycan war.
On a ship off the coast, Viktor has been recovered by Tannis, and is put into his coffin to sleep/recover while the next elder reigns over the vampires.
The film ends with the first minute of the first film, with Kravens (Shane Brolly) speech to Selene (Kate Beckinsale) revealing that Viktor had killed her family, and that he kept her alive because she reminded him of his daughter.