Philippe Gaston (Matthew Broderick) est un jeune voleur emprisonné dans le donjon d'Aquila. Réussissant à s'échapper des cachots, il est finalement rattrapé par la garde lancée à sa poursuite. Mais il est sauvé in extremis par Étienne de Navarre (Rutger Hauer), ancien chef de la garde d'Aquila.
Amant d'Isabeau d'Anjou (Michelle Pfeiffer), Navarre provoqua par le passé la jalousie de l'évêque d'Aquila (John Wood), également amoureux d'elle. Incapable de résister à cette passion dévorante, l'évêque chassa alors le couple d'Aquila et les condamna en pactisant avec le diable. Désormais victimes d'une malédiction, les amants sont condamnés à être éternellement ensemble et pourtant toujours séparés: pendant la journée, Isabeau se transforme en faucon, et la nuit, Navarre devient un loup.
Las de cette vie sans espérance, Navarre a décidé d'en finir en tuant l'évêque. C'est pourquoi il a décidé de venir en aide au jeune Gaston car celui-ci pourra lui indiquer le passage qu'il a emprunté pour quitter Aquila, lui permettant ainsi de s'y introduire à l'insu de la garde.
Philippe Gaston, qui découvre petit à petit le cruel secret des amants, décide de les aider à briser la malédiction, même s'il ne sait comment s'y prendre. Un abbé auquel Navarre avait confessé son amour, et qui l'avait trahi en le dénonçant à l'évêque, va les y aider. Voulant réparer son erreur, il leur annonce qu'il a trouvé le moyen de briser la malédiction.