In Christmas of 1954, a young Hellboy is told a bedtime story by his adoptive father, Trevor Bruttenholm (John Hurt), involving an ancient war between man and magical creatures, all started by man's greed. The master of the goblin blacksmiths built a golden mechanical army for King Balor (Roy Dotrice), the one-armed king of Elfland. The Golden Army devastated the humans so mercilessly that Balor forged a truce with them to stop the bloodshed: man would keep his cities and the creatures would keep their forests. Prince Nuada Silverlance, son of King Balor, (Luke Goss), did not agree with the truce, and left in exile. The magical crown controlling the army was broken into three pieces, one piece going to the humans and the other two kept by the elves, so the Golden Army could never be used again.
In the present, Nuada declares war on the humans. He collects the first piece of the crown from an auction and kills his father for the second. His twin sister Nuala (Anna Walton) escapes with the final piece. Meanwhile, Hellboy (Ron Perlman) is having relationship issues with his girlfriend Elizabeth Anne Sherman (Selma Blair). He is also having trouble accepting that their organization, the Bureau for Paranormal Research and Defense, must remain a secret. During a mission to eradicate thousands of ravenous Tooth Fairies, which Nuada set loose as he took the first piece of the crown, Hellboy allows himself to be revealed to the world. In the commotion, Abraham Sapien (Doug Jones) discovers that Liz is pregnant. Furious about the public unveiling, Washington sends a new B.P.R.D. agent, the ectoplasmic medium Johann Krauss (Seth MacFarlane, John Alexander, & James Dodd), to take command. With Krauss in charge, the team tracks the Tooth Fairies to the Troll Market, an enormous merchant city hidden under the Brooklyn Bridge, for clues. Abe stumbles onto Princess Nuala, who has obtained a map leading to the Golden Army, during their search, and quickly falls in love with her. She is brought under B.P.R.D. protection following an attack by Nuada's companion Mr. Wink (Brian Steele) and an Elemental Forest God. During the Elemental fight, Hellboy questions whether it is right to fight for the humans when he too is perceived by humans as a monster.
Nuada tracks his sister to the B.P.R.D. headquarters using their magical bond, which causes them to share wounds and allows them to read each others' thoughts to an extent. Nuala, sensing her brother's arrival, burns the map, along with the canister in which it came, and hides the final piece of the crown within one of Abe's books. However, the real map is on the canister. Nuada kidnaps his sister and mortally wounds Hellboy with his spear. Unable to remove the spear shard, Liz, Abe, and Krauss take Hellboy to the location of the Golden Army, hidden in Antrim, Northern Ireland. They encounter a goblin (Alexander), and he brings them before the Angel of Death (Jones), who has been waiting for their arrival. Though told that Hellboy would doom humanity if he lives, and that she'll suffer the most from it, Liz pleads for Hellboy's life. Amused by her choice, the Angel removes the shard from Hellboy's chest and tells Liz to give him a reason to live. She reveals to Hellboy that he's going to be a father, and he recovers.
The goblin leads the team to the resting place of the Golden Army (revealing that he is the builder of the Golden Army), where Nuada awaits them. In exchange for Nuala, Abe gives him the last piece of the crown. With the crown reformed, Nuada awakens the Golden Army and orders them to kill the agents. Fighting proves pointless, as the soldiers magically heal themselves when killed. Hellboy challenges Nuada for the right to the crown, and Nuada is forced to accept, since Hellboy, as Anung un Rama, son of the Fallen One, is royalty in Hell. Hellboy defeats Nuada and spares his life, but Nuada tries to stab Hellboy. Nuala commits suicide to stop her brother. Abe rushes to Nuala and psychically tells her his feelings for her before she and her brother turn to stone and die. Liz then melts the crown, shutting down the Golden Army forever. As the B.P.R.D. agents leave the underground compound, Thomas Manning (Jeffrey Tambor) reprimands them for their actions. To his surprise, Hellboy, Liz, Abe, and Krauss all hand over their belts (though Hellboy keeps the Samaritan) and announce their resignation from the B.P.R.D. As they walk away, Hellboy contemplates his future life with Liz and their baby. Liz stops and corrects him, saying "babies", surprising him with the fact that she is pregnant with twins