En 1984, au terme d'un sujet présenté par son professeur de sociologie
(Mickey Cottrell), le brillant Todd Bowden
(Brad Renfro) se passionne pour l'holocauste nazi. C'est ainsi que l'adolescent reconnaît dans un bus Kurt Dussander
(Ian McKellen), un ancien directeur de camp d'extermination en fuite. Il se rend chez le vieillard, naturalisé sous le nom d'Arthur Denker. Ayant constitué un dossier sur le criminel nazi, Todd l'oblige visite après visite à lui raconter les horreurs qu'il a perpétrées. Il lui ordonne même de porter le costume S.S. qu'il lui offre. Peu à peu, le lycéen se désintéresse de ses camarades (son copain Joey
(Joshua Jackson #1), son flirt Becky Trask
(Heather McComb)...), a des élans de cruauté, voit ses notes chuter... Inquiet, le conseiller d'orientation Edward French
(David Schwimmer) convoque ses parents, Monica
(Ann Dowd) et Richard
(Bruce Davison). Se faisant passer pour le grand-père Victor
(James Karen) et prétextant des problèmes familiaux, Arthur Denker obtient un délai auprès de French pour que Todd relève ses résultats. Grâce à de prétendues notes qu'il aurait soigneusement enfermées, Denker oblige l'élève doué à travailler d'arrache-pied et à retrouver l'excellence. Pris d'une crise cardiaque après avoir poignardé un clochard
(Elias Koteas) qui menace de révéler son identité, Denker appelle Todd d'urgence. L'adolescent achève le mourant, appelle les secours et enterre le cadavre dans la cave. À l'hôpital, Benjamin Kramer
(Michael Byrne), qui a survécu aux atrocités du camp de concentration de Patin, reconnaît en son voisin de chambre son ancien tortionnaire. L'inspecteur Dan Richler
(Joe Morton) et le Dr. Isaac Weiskopf
(Jan Triska), spécialiste des affaires judaïques, enquêtent. Refusant d'être envoyé à Jérusalem dès son rétablissement, Denker-Dussander se suicide. Todd réussit brillamment ses examens. French tente de voir les Bowden en découvrant avoir été dupé par le faux grand-père. Mais Todd l'en dissuade, en le menaçant de révéler ses prétendues attirances pour les jeunes garçons...