In 1693 Salem, Massachusetts, Thackery Binx (Sean Murray) is awakened and notices that his little sister, Emily (Jodie Rivera), is gone. He hurries outside and asks his best friend Elijah if he's seen her, but he hasn't. Instead, he points out a violet plume of smoke rising above the woods: a sign that witches are conjuring. Suddenly, they spot Emily being lured into the woods by an old woman. Thackery orders Elijah to get the town elders before giving chase, arriving at the witches' cottage just as Emily is led inside.
The cottage is home of the Sanderson sisters: Winifred (Bette Midler), Mary (Kathy Najimy), and Sarah (Sarah Jessica Parker). Greying and stooped with age, the witches brew a potion which will enable them to suck the life-force out of young children, restoring their own youth and vitality. Thackery attempts to stop them from giving his little sister the potion, but he's too late. Winifred easily subdues him with her powers before she and her sisters drain Emily's life-force. Rejoicing at their stolen youth, the witches turn their attention to Thackery. Initially, she intends to kill him, but when he calls her a hag, she decides that he needs an even harsher punishment. She curses him to live forever in the form of a black cat, doomed to live with the guilt of failing to save his sister for all eternity.
Just after they transform Thackery, the townspeople — led by his parents — barge into the cottage and capture the sisters, hanging them right then and there. But before they die, Winifred casts one last spell that on Halloween night when the moon is full, a virgin will summon them back from the dead so that they can claim the lives of all the children in Salem.
Three hundred years later, a teenager named Max Dennison (Omri Katz) is unhappy that he was forced to Salem from his hometown of Los Angeles, California. Skeptical of the local tales of the Sanderson Sisters, he announces to his class that Halloween is merely a conspiracy dreamt up by the candy companies. He's swiftly put in his place by Allison (Vinessa Shaw), a popular girl at school Max has a crush on. He boldly asks for her number, but she rejects him. The day isn't improved when he's accosted by two dimwitted school bullies calling themselves Jay and Ice who forcibly steal his shoes. On the other hand, his younger sister Dani (Thora Birch) is very excited for the holiday and dresses up as a witch, eager for Max to take her trick-or-treating later. When he refuses, she gets their parents to force him since they're going to a party and are unable to take Dani themselves.
As they trick-or-treat, the siblings wind up at Allison's home. When Dani expresses interest in the legend of the Sanderson Sisters, Allison reveals that her mother used to run the museum —which used to be the sisters' cottage — about them until it closed due to the spooky things that kept happening there. After some cajoling from Max, they decide to visit it as a special Halloween treat. While there, Max finds the Black Flame Candle, which is rumored to raise the spirits of the dead on Halloween night if lit by a virgin when the moon is full. Wishing to prove that all the superstitions are just "a bunch of hocus pocus", he impulsively lights it. When the flame instantly turns jet black, he knows he's made a mistake.
The house rocks with power as the sisters are revived. When the door is thrown open, Dani and Allison hide on either side and Max ducks down below a table. The witches are overjoyed at returning home, even more so when Mary declares that she smells children. Her powerful nose leads them straight to Dani's hiding place, forcing her out into the open. They pick her up and almost succeed in throwing her into their cauldron when Max jumps out of hiding, demanding that they release his sister. Amused, Winifred easily subdues him with her powers. Held fast by Mary, Dani can only watch as Winifred practices her witchcraft on him, delighted that she hasn't lost her touch at all. However, Allison manages to wallop Mary with a frying pan as Dani hits Winifred and Sara with her candy bag. Before Winnie can retaliate, a black cat attacks her out of nowhere, giving Dani enough time to wake up her dazed brother. Max triggers the sprinklers, which he convinces the witches is a "burning rain of death". The cat orders Max to grab the witches' spellbook, batting at him impatiently when Max stares at the talking cat in shock. Nevertheless, he breaks into the glass case containing the book and makes his escape along with the cat.
The cat leads them to a graveyard, telling them that since its hallowed ground, witches can't set foot there. Confronted with a talking cat, Dani and Allison stare at Max, who merely states that the cat talks as if its the most normal thing in the world. The cat leads them straight to grave of Billy Butcherson, and ex-lover of Winifred's. He explains that when Winnie found out that he was cheating on her with Sarah, she poisoned him and sewed his mouth shut so he couldn't reveal her secrets even in death, hoping that the trio will understand who they are dealing with. Allison realizes that the cat must be Thackery Binx. Confirming her suspicions, Binx leads them to the grave of his little sister Emily and tells them his story. Determined to prevent anyone from resurrecting the sisters, Binx spent the last 300 years guarding the Black Flame Candle from people like Max.
Meanwhile, the Sisters realize that the "burning rain of death" is merely water. Winnie is furious that they've been tricked and leads her sisters straight out the door to give chase, but they double back in terror when confronted with the unholy clamor of a firetruck. Deciding that the air is safer, they take their broomsticks and follow Mary's nose to the graveyard. Although they can't set foot on hallowed ground, they can still fly above it on their broomsticks. Even so, they don't have much success capturing the children so Winifred calls in backup. She raises Billy back from the dead as a zombie and orders him to retrieve her spell book. Managing to evade Billy, Max smacks the zombie's head off with a tree branch as Binx helps them escape through the sewers.
The Sisters attempt to track them, but they've gone too far away for Mary to sniff them out. Suddenly, the Sisters are interrupted by a bus. Although initially alarmed, the smitten driver agrees to take them to where children are and even lets Sarah drive. Meanwhile, Binx emerges from the sewers first when he promptly gets hit by the bus Sarah's driving. Max, Allison, and especially Dani are devastated, but the curse of immortality soon resurrects him and they set off to warn Max's parents. Back on the bus, Mary suddenly smells children and the Sisters hurriedly disembark, but they are extremely confused by the strange creatures who smell like children, but don't look like children. After a misunderstanding involving a man dressed like Satan, Winnie realizes that All Hallows' Eve has become a "night of frolic". Her irritation is only increased when the trio discover that their broomsticks have been stolen. The only good news is that Mary's picked up the scent of Max, Dani, and Allison again.
Convincing their parents that they've brought three legendary witches back to life isn't going well when suddenly, Dani catches sight of the Sisters and Billy. As the Sisters take the stage and hold the entire room quite literally spellbound with their singing, Dani and the others run from Billy, eventually managing to escape. Allison finds an old oven and has an idea to burn the witches to death in the high school's pottery kiln. Max pretends to host a show named High School Hell under the name Boris Karloff Jr., and make the witches contestants. Luring the witches inside with a Spanish speaking boombox, the plan seems to go perfectly as Dani, Max, and Allison watch them burn, and they soon celebrate the apparent destruction of the witches. Although Binx is dismayed that the curse on him hasn't broken, he accepts Dani's offer to adopt Binx as her cat.
However, the sisters survive, hardly singed. Nevertheless, they have been outwitted, defeated, and have lost the children once again, so they return home to sulk. As the candle's power can only bring them back for this single night, the witches are running out of time and need to steal at least one child's life to extend their own. Yet, Winifred is unable to remember the ingredients to the Life Potion and mournfully calls to her beloved spell book, begging it to give her a sign to its location. Evidently it hears her because just as she's about to give up on existence, she sees a beam of power in the distance that could only have come from her book. Hope renewed, she and her sisters grab a common broom, mop, and vacuum cleaner to fly on and successfully take back their book and kidnap Dani and Binx. Confident that they'll remake the potion, Winnie sends Sarah to fill the sky with her siren-like singing voice to lure all the children of Salem to their doom.
Once at the cottage, Dani is tied firmly to a chair until the potion is ready. They try to force her to drink it, but she's able to avoid it long enough for Max to arrive, trick the witches into thinking the sun has risen, and rescue her and Binx. They head straight to the hallowed ground of the graveyard, where Billy is waiting for them. Winifred, floating outside the gates, impatiently orders Billy to kill Max and be done with it, but he merely grabs Max's pocket knife and slices open the stitches that have bound his mouth for so long. His first words in three centuries are insults hurled at Winnie. Thoroughly sick of his ex-girlfriend, he teams up with the children.
Billy offers to let Dani stay inside his open grave where she will be safe, but just in case, Allison sprinkles salt all around it — a substance that witches can't directly touch. When the witches arrive and begin to attack, Winifred manages to knock Billy's head off. Unable to bear the sight of Billy blindly stumbling around looking for his head, Dani dashes out of the protected grave and gives it back to him. Unfortunately, Winifred takes advantage of this opportunity and snatches Dani into the air where she attempts to force the girl to drink what remains of the potion. Binx leaps onto the broom from a tree and scratches at Winifred, managing to make her drop the potion before he is flung to the rocky ground. Max catches the potion and threatens to smash it if Winifred doesn't let Dani go, but the witch promises that she'll kill her if he harms her potion. Taking a third option, Max drinks it himself, forcing Winifred to release Dani and take him instead. Calling him a fool for sacrificing himself for his sister, she drags him high into the air and attempts to inhale his life-force despite his wild struggles. Dani, Allison, and Billy manage to hold back Mary and Sarah by yanking the cord of the vacuum cleaner Mary is using as a broomstick, releasing it once enough momentum has built up to slingshot the two sisters into the sky. As they fly uncontrollably past Winifred and Max, the two lose their balance and fall to the ground. Determined as ever, Winifred claws her way towards Max and once again tries to drain him, but she is standing on hallowed ground and turns to stone. Shortly after, the sun rises and causes the sisters to explode into nothingness.
Dani hurries to Max's side and expresses her disbelief that he sacrificed himself for her. He replies that he had to, he's her brother. They embrace as the siblings tell each other that they love each other. Reuniting with Allison and Billy, Dani tells the zombie to sleep well as he returns to his coffin. Suddenly realizing that Binx isn't there, Dani soon finds his body lying across his sister's grave. Sobbing, she begs him to wake up like he did before, but he doesn't stir. The curse is broken, and Thackery's soul is finally free. His spirit comforts Dani by assuring her that he will always be with her before joining the spirit of his sister Emily. Tearful, but smiling, Dani hugs her brother as they watch Thackery and Emily depart.
As the new day dawns, Dave and Jenny Dennison are freed from the spell the witches cast on the party-goers, meaning they can finally stop dancing and go home. Meanwhile, Jay and Ice are still trapped in the cages the Sisters put them in earlier for calling them ugly "chicks". As they sing "Row, Row, Row Your Boat" in their boredom, the spellbook below them ominously opens its eye.