Synopsis

In a Norwegian mountain village, children play under the shadow of a sinister mountain. In one small cottage a gnome, Bu (Danny Cooksey), is happily decorating his own home (a dollhouse located in the attic) with Christmas decorations, aided by mice and birds. He explains that the Christmas season doesn't really start for him until the arrival of the Christmas tree, at which point two girls and their father return to the cottage dragging a tree on a sleigh. Though the humans set the tree up in their home below, the uppermost branches are pushed through a hole in the attic to form a miniature tree for the gnome. He quickly decorates the tree, topping it with a minuscule Bible.

Bu explains that while his people, like humans, love Christmas, trolls do not. He explains that trolls live high in the mountains because they fear our world — to them, all that is good is bad and all that is right is wrong. They have no word for "love" and do not believe in God. He adds that he knows all this because the previous year he not only lived among the trolls, but was their crown prince.

The film turns to the previous December. Bu narrates how his father, the two-headed King Ulvik (Vincent Price and Jonathan Winters), could grow so angry that storms would sweep across Norway.

Ulvik is shouting at his wife, Queen Sirena (Cloris Leachman), for having given him the insulting news that Bu is failing his lessons at Sinister School. Sirena waives his anger, displaying an obvious favoritism for her younger sons, the two-headed Borch (Rob Paulsen and Laurie Faso) and Prag (Neil Ross and Frank Welker). Ulvik accuses the queen of having passed on bad genes to Bu (noting that the prince, like his mother, has only one head). Sirena rebuffs this by pointing out Bu's lack of grotesque features, like his father. She claims that his innocent looks and unassuming personality will lead to a revolt if he remains crown prince. Ulvik decides that he will have to teach his son to be a brat, blaming the modern school system for lack of discipline.

In Sinister School, Professor Nidaros (Don Knotts) teaches his class to cause disorder, inflict pain, and follow the Troll Golden Rule: "Do unto others before they do unto you" ("Sinister School"). His lesson is interrupted by Ulvik, who arrives to test his sons' educations. While Prag demonstrates his understanding of humans (that they kill trolls for sport), and Borch demonstrates a knowledge of troll conduct (that those who are different should be avoided at all costs), the king only cares about Bu's learning. The crown prince timidly answers his father's questions, taken from the Troll Bible, correctly (reciting the Troll Golden Rule, his belief in growing more "evil and disgusting day after day", and that he is heartless), but finishes by politely asking to return to his seat. Upon hearing Bu utter the words "thank you", Ulvik begins shouting at his son, accusing him of profanity and disgrace, at which Bu begins to cry. Infuriated, Ulvik sends the class fleeing at his rage.

Later, the young trolls make good on their lessons, ruining each other's fun in the winter weather. Bu sits alone in the palace courtyard, hurt by his father's tirade. A dim-witted troll named Ribo (Michael Bell) tells Borch and Prag that they should eat their eldest brother, making Prag the new crown prince. A devious troll named Stav (Charles Adler) suggests that the princes do not have the nerve to deal with Bu, to which they protest that the king would kill them if they hurt the troll prince. Based on a rumor that the humans are currently involved in something strange (hanging wreaths on their doors and lights on their eaves), the four trolls devise a plan to trick Bu into venturing to "People-land", in the hopes that he will get killed by humans while investigating. They tell Bu that the humans may be planning an invasion of the Troll Kingdom, and that as prince it is his duty to investigate. While Bu is at first hesitant (believing the expedition to be a trick and fearing the humans), he is inspired by the thought that uncovering the humans' plot will make his father proud.

Summoning his courage, Bu decides to lead the four trolls to People-land in spite of his timidity, facing the trollish fears of humans and those who are different ("Down From the Mountain"). Their first obstacle down the mountain is the Troll Bridge, which is made of rotting ropes held together by frost. Though the trolls hope Bu will fall (saving them the trouble of actually going to People-land, which they do fear), he makes it safely across and the five continue down the mountain, encountering two rabbits and a squirrel (which, by comparison, are extremely large). Finally they arrive in a small Norwegian mountain village. Venturing to the nearest cottage, Bu witnesses a woman baking and eating gingerbread men. Mistaking them for flattened, cooked trolls, Bu flees the scene in horror, telling his companions to run for their lives.

Though the trolls believe Bu, they tie him to the top of a tree near a ledge of the mountain on their way back to the kingdom. Bu pleads with his brothers to rescue him, but they mock him for using the word "please" and leave him to the mercy of the humans. Two young girls, Kristi (Ami Foster) and Sonja (Christina Lange) come with their father (Vincent Price) to find a Christmas tree. Choosing the tree to which Bu is bound, they chop it down and haul it onto their sleigh, singing a carol ("Sleigh Bells in December").

While decorating the tree at home, the two sisters discover Bu, whom they take for a gnome based on his friendly appearance. Avoiding their questions, Bu demands to know more about them, confused by the good nature of their song versus his knowledge of humans. As the girls explain caroling and Christmas, Bu is confused by the word "Christ". After Kristi mentions the Bible, Bu is curious to see what humans use (having been raised on the Troll Bible himself). Sonja reads Luke 2:10–11, prompting Bu to ask what "savior" means. After learning that Christ is sent to "love the whole world" (and having the concept of "love" explained), Bu asks if "the whole world" includes him. Kristi and Sonja, taking him for a gnome, don't hesitate to say yes. When he questions God's love for trolls, the girls affirm that, as evil as they may be, God must love them ("God Loves All He Made"). As he listens, to Bu's shock his heart begins to beat for the first time in his life. Sonja finds a miniature Bible used as an ornament and gives it to the prince.

As Bu begins to read, the house tremors and winds howl outside. Horrified, he runs to the window and realizes the king's messenger, Malfred, has been sent by his father to retrieve him. Bu frantically tries to help Kristi and Sonja escape, but realizing they have no place to go but their home, he leaves them to find Malfred before the messenger finds them. As he runs into the mountains, Bu realizes he finally understands love. Manifested as a ruinous, fiery-eyed monster of the wind, Malfred freezes the awaiting Bu and carries him to a cell in the palace prison.

As Bu wanders confused in his cell, he hallucinates of Krisi and Sonja before realizing they are gone. Remembering them brings to mind his Bible, however, which Bu begins to read, discovering the true Golden Rule. He falls asleep reading Luke, but is roused by the reawakening of his heartbeat. As he finally accepts that Sonja and Kristi must be right, two giant troll guards remove him from his cell and take him to a public trial.

As the crowd accuses him of sedition and mocks his appearance, Ulvik explains that Bu has been brought before the Council of Elders (six identical trolls) to determine whether he is fit to remain crown prince. Borch and Prag have testified against Bu, claiming he attempted to push them off the Troll Bridge. They add that he tied them to trees and bragged of spying for the humans, which horrifies the crowd and Bu's parents. Finally Borch concludes that the humans plan to cook and eat the trolls, at which Queen Sirena accuses Bu of trying to kill her "babies".

Ulvik protests that there is no evidence against his son, but Krill (Michael Bell), the prosecuting attorney, charges Bu with heresy while Stav points out that Bu is at least guilty of desertion. Agreeing that if Bu has committed heresy than he is guilty, Ulvik encourages his son to prove his knowledge of "Trollship", at which Sirena accuses her husband of favoritism. The king proceeds to ask his son the same questions he had asked him previously in Sinister School. Bu, however, recites the biblical Golden Rule, his belief in Jesus, and that he has a heart full of love. As he speaks, he fails to notice his nose shrink, his tail disappear, and his ears lose their points.

Not understanding what Bu is saying, but recognizing its contradiction to the Troll Bible, the court accuses him of blasphemy. Irate, the king not only strips Bu of his princeship, but disowns him and leaves him to the mercy of the crowd. Bu escapes amid the confusion and heads down the mountain in a snow storm. Discovering that the former prince has escaped, Sirena fears that he will lead the humans to the Troll Kingdom and begs Ulvik to retrieve him. The king, however, depressed by the loss of his favorite son, assures his wife that Bu has never been a traitor and will not cause them any trouble. Having eavesdropped on their parents' conversation, Borch and Prag find Stav and Ribo and head out armed into the night to kill Bu.

Lost in the wilderness, Bu laments that he has no home since he is neither a troll nor a human ("I'm So All Alone"); he finds shelter by a tree and falls asleep. Meanwhile, the murderous trolls are chased back up the mountain by a fox, the Troll Bridge crumbling behind them and trapping them in the Troll Kingdom. As they flee, they are watched warily by a gnome, Bjørn (William Christopher), and his wife (B. J. Ward). Discovering Bu at the base of their treehouse, Bjørn ventures down to see if he is another troll, but proclaims that he must be a traveling gnome. As Bu protests, he catches his reflection in a slab of ice and sees that he is no longer trollish. Bjørn asks Bu to stay in the valley to help out the other gnomes with their work. After Bu learns that he is in the village of Kristi and Sonja, Bjørn takes him to their cottage.

Back in the present, Bu readies himself for bed. He explains that while his story may sound like a fairy tale, the story of Jesus is not. He falls asleep as the Star of Bethlehem shines outside.