The film is based on the werewolf story of the same name in Angela Carter's short story collection The Bloody Chamber. Carter herself co-wrote the screenplay with Jordan, based on her own short story and her earlier adaptation of The Company of Wolves for radio.

Carter's first draft of the screenplay, which contains some differences from the finished film, has been published in her anthology The Curious Room (1996).

Set in modern times, the film takes place within the dreams of Rosaleen (Sarah Patterson), a young girl. Rosaleen dreams that she lives in a fairytale forest with her parents (Tusse Silberg and David Warner) and sister (Georgia Slowe), but one day her sister is killed by wolves. While her parents are mourning, Rosaleen goes to live with her grandmother (Angela Lansbury), who knits a bright red shawl for her granddaughter to wear. The superstitious old woman gives Rosaleen an ominous warning, to beware men whose eyebrows meet. Rosaleen returns to her village, but finds that she must deal with the advances of an amorous boy (Shane Johnstone). Rosaleen and the boy take a walk through the forest, but the boy discovers that the village's cattle have come under attack from a wolf. The villagers set out to hunt the wolf, but once caught and killed, the wolf's corpse transforms into that of a human being.

Rosaleen later takes a basket of goods through the woods to her grandmother's cottage, but on her way she encounters an attractive huntsman (Micha Bergese), whose eyebrows meet. He challenges her, saying that he can find his way to her grandmother's house before she can, and the pair set off. The hunter arrives at Rosaleen's grandmother's house first, where he reveals his bestial nature and eats her. Rosaleen arrives later and discovers the carnage, but her need to avenge her grandmother is complicated by her desire for the hunter. In the ensuing scuffle, Rosaleen succeeds in shooting the huntsman with his own rifle. But instead of dying, the hunter contorts in pain and transforms into his wolf shape. Rosaleen takes pity on the wounded beast, noting that his pack is leaving him behind. She sits down, and begins petting the wolf kindly and tenderly.

Ultimately the villagers arrive at the house, looking for a werewolf within. Instead, they discover that Rosaleen herself has become a wolf. She and the huntsman escape to the forest, joined by a growing pack. It is strongly suggested that the couple have chosen each other as mates.

Back in the present day, Rosaleen awakes with a scream, and discovers wolves outside her house, followed by their breaking through the window of her bedroom.

Throughout the course of the film, a number of stories are interspersed into the main narrative as tales told by several of the characters:

Granny's tale to Rosaleen: A young groom (Stephen Rea) is about to bed his new bride (Kathryn Pogson) when a 'call of nature' summons him outside. He disappears and his bride is terrified to see wolves howling outside. A search the following day yields a wolf paw print only. Years later, she remarries and has children, only to have her original husband finally return. Angered at her having had children with a new husband, the groom transforms into his werewolf form, but is slain when the new husband (Jim Carter) returns.

Granny's second tale to Rosaleen: A young man is walking through the enchanted forest when he encounters the Devil (Terence Stamp), anachronistically arriving in a Rolls-Roycechauffeured by the actress playing Rosaleen in a blonde wig. The Devil offers the boy a transformative potion, which he rubs onto his chest, causing hair to sprout rapidly. The boy is pleased, but shortly thereafter vines grow swiftly from the ground, twining around his legs and trapping him. He wails in protest and fear, his face distorting with his cries, anguished visage appearing in Rosaleen's bedroom mirror at the end of that dream sequence.

Rosaleen's story to her mother: A woman (Dawn Archibald) 'done a terrible wrong' by a rich, young nobleman (Richard Morant) turns up visibly pregnant at his wedding party, where she magically transforms the groom, the bride and the guests into wolves. They flee into the forest, but the sorceress commands that the wolves 'serenade' her and her child each night.

Rosaleen's story to the huntsman/wolf: A she-wolf from the world beneath arrives at a village. Despite meaning no harm, she is shot by a villager. She reveals herself in her human form (Danielle Dax) to an old priest (Graham Crowden), who bandages her wound. Ultimately she returns to her world through the village well.