John Constantine (Keanu Reeves) est doué d'une aptitude dont il ne peut se départir : celle de distinguer les démons et les anges qui peuplent la Terre sous forme humaine. Il a fait un aller retour aux enfers après avoir tenté de se suicider pour échapper à cette troublante vision, mais il fut ressuscité contre son gré. Il patrouille maintenant les frontières entre le paradis et l'enfer en combattant les forces du mal dans l'espoir de gagner sa rédemption. Ce faisant, il doit aider Katelin Dodson (Rachel Weisz), une femme policière incrédule, à lever le voile sur le suicide mystérieux de sa soeur jumelle.