En 1693 à Salem, la petite sœur de Thackery Binx se fait enlever par les sœurs Sanderson, trois sorcières nommées Winifred, Sarah et Mary. Binx affronte les sorcières, mais elles réussissent à voler la force vitale de sa soeur pour se rajeunir. Après cela, les sorcières transforment Binx en un chat condamné à vivre à tout jamais hanté par son échec. Alors que les sorcières se font arrêter par les habitants de Salem pour être pendues, Winifred maudit Salem, prophétisant leur retour sur Terre grâce à un être pur et vierge le jour d’Halloween.
300 ans plus tard, en 1993, Max Dennison, un adolescent qui a déménagé à Salem avec sa famille, ne croit pas aux sorcières et aux fantômes, contrairement à Alisson, une fille de sa classe dont il est amoureux. Le soir d'Halloween, il se voit obligé d'accompagner sa jeune sœur Dani pour sa tournée de bonbons. Max, Dani et Alisson se retrouvent ainsi dans la vieille maison des trois sœurs Sanderson. Max allume la bougie à flamme noire et les trois sorcières reviennent à la vie.
Les sorcières tentent de tuer Dani, jusqu’à ce que Max les interrompe et s’échappe avec le grimoire de Winifred, grâce à l’aide de Binx, toujours sous sa forme de chat. Celui-ci emmène le groupe dans un vieux cimetière où ils seront protégés des sorcières, car c'est un terre sacrée. Les sorcières finissent par les rattraper au cimetière où Winifred ressuscite son ancien amoureux Billy Butcherson, le zombie part à la recherche des enfants.
La magie qui les a fait renaître ne marchant que pour la nuit d'Halloween, les sorcières parcourent la ville pour trouver des enfants afin de les manger sinon elles finiront en poussière au lever du soleil. Après avoir tenté de prévenir les adultes du retour des sorcières, Winifred jette un sort pour les faire danser indéfiniment. Max, Allison, Dani et Binx fuient pour ensuite attirer les sorcières dans un four à poterie du lycée pour les y brûler. Ils croient s’être débarrassés des sorcières, alors qu’elles peuvent ressusciter jusqu’au lever du soleil à cause du sort.
Ignorant que les sorcières sont encore en vie, les enfants et Binx rentrent à la maison pour se reposer. Au réveil et pour aider Binx, Max et Allison ouvrent le grimoire pour annuler le sort mais le grimoire indique l'emplacement des enfants aux sorcières. Celles-ci partent en balais volant pour kidnapper Dani et Binx tout en récupérant le grimoire. Sarah utilise ensuite son chant hypnotique pour faire venir les enfants de Salem jusqu’à la demeure des trois sœurs. Max et Allison réussissent à sauver à temps Dani et Binx et bernent les sorcières en leur faisant croire que c’est déjà l’aube.
De retour au cimetière, Billy retrouve les enfants et utilise le couteau de Max pour couper la couture de sa bouche pour enfin insulter Winifred révélant qu’il est du côté des enfants pour arrêter les sorcières. Les sorcières attaquent; Winifred parvient à attraper Dani et essaie de voler sa jeunesse en la forçant à boire sa dernière potion. Binx intervient à temps pour faire tomber le flacon, que Max attrape. Il boit la potion pour obliger les sorcières à le prendre lui plutôt que Dani. Ne voyant pas que le soleil va bientôt se lever, Winifred commence à aspirer la jeunesse de Max. Tandis que Sarah et Mary sont projetées au loin, Max continue à lutter contre Winifred en réussissant à la faire tomber à terre. Winifred tente de réaspirer la vie de Max mais est changée en pierre avant de se répandre en poussière avec Mary et Sarah dès l’aube.
Binx est libéré de la malédiction une fois les sorcières vaincues et retrouve sa sœur Emily pour enfin rejoindre l'au-delà, alors que Billy retourne dans sa tombe retrouver le repos éternel. Dans la maison des sorcières le grimoire de Winifred a toujours l'oeil ouvert, présageant
le retour prochain des sœurs Sanderson.