C'est la période des vacances de Noël à Greenwich Village. Gillian Holroyd est une sorcière. Elle n'obéit pas aux règles de la sorcellerie et aime se promener pieds nus. Elle n'a pas eu de chance en amour. Elle est malheureuse de sa vie. Elle a un amour admiratif pour son voisin, l'éditeur Shep Henderson.
Un jour, il entre dans sa galerie d'art africain. Il demande à passer un coup de fil (après que la tante de Gillian lui ait jeté un sort et l'ait cassé). Gillian apprend que Shep est sur le point d'épouser un de ses anciens ennemis de collège, Merle Kittridge. Gil et Pyewacket se vengent en jetant un sort à Shep, qui doit donc tomber amoureux d'elle. Elle finit par tomber amoureuse de lui aussi. Elle doit faire un choix, car les sorcières qui tombent amoureuses perdent leurs pouvoirs surnaturels. Lorsqu'elle décide d'aimer Shep, le chat et l'esprit animal de Gillian, Pyewacket, se met en colère et s'en va.
Sidney Redlitch, l'auteur d'un best-seller Magic in Mexico, apparaît soudainement dans le bureau de Shep (grâce à un petit tour de magie qui l'y amène). Gilliam et Pyewacket le font venir quand elle apprend que Shep veut le rencontrer pour écrire un livre ensemble. Redlitch est embrouillé et confus, mais il ne tarde pas à comprendre. Redlitch fait des recherches pour un livre sur les sorcières à New York. Il trouve une aide "de l'intérieur" lorsque Nicky, le frère sorcier de Gillian, lui propose de l'aider en échange d'une part des bénéfices.
Gillian avoue plus tard à Shep qu'elle est une sorcière et l'a ensorcelé. Shep se met en colère, croyant qu'elle lui a jeté un sort juste pour se venger de Merle, et les deux se disputent. Gillian tente de jeter divers sorts à Merle, comme celui qui la fait tomber amoureuse du premier homme qui entre dans son appartement. Elle découvre cependant qu'elle a perdu ses pouvoirs parce qu'elle aime Shep.
Pendant ce temps, Shep découvre qu'il ne peut vraiment pas quitter Gillian, à cause du sort. Pour s'échapper, il se tourne vers une autre sorcière, Bianca De Pass, qui brise le sort avec une horrible infusion cuite qu'il doit boire. Shep se bat à nouveau avec Gillian et lui laisse le cœur brisé.
Shep n'est pas en mesure de se remettre avec Merle. Elle ne croit pas que l'histoire des sorcières soit vraie. Des mois plus tard, Shep revient et découvre que Gillian a perdu ses pouvoirs magiques à cause de son amour pour lui. Même Pyewacket l'a quittée parce qu'elle n'est plus magique. Quand il réalise que son amour est vrai, les deux se réconcilient.