The movie opens in New York City, in January 1955. Harry Angel (Mickey Rourke), a downtrodden but competent private investigator is contacted by an attorney named Herman Winesap (Dann Florek) and instructed to meet a client named Louis Cyphre (Robert DeNiro) in a Harlem church. Cyphre, an elegant but mysterious man with long, manicured fingernails, tells Angel about a once-popular big band crooner named Johnny Favorite who was drafted during World War II and suffered severe neurological trauma in action. Favorite's incapacitation disrupted a contract with Cyphre regarding unknown collateral, and Cyphre believes that the hospital has falsified records, preventing the contract from being fulfilled. He hires Angel to discover the truth, and in the process, locate Favorite.
Angel travels to the hospital and discerns that the records were altered by a morphine-addicted veteran physician named Fowler (Michael Higgins) who admits he was paid $25,000 by a wealthy friend of Favorite's and a woman to do so; Fowler turns up dead shortly thereafter and Angel fears being suspected. He meets Cyphre to update him and end the job, but Cyphre pays him $5,000 to continue his search. Angel uses a journalist lover to find out most of Favorite's background, including his pre-war friendship with a Coney Island fortune teller. He learns that her name is Margaret Krusemark (Charlotte Rampling), now a prominent figure in voodoo, and travels to New Orleans to find her.
Margaret refuses to divulge much information to Angel and tells him that Johnny is dead to her. To circumvent her obstruction, he tracks down Johnny's former secret love and discovers her daughter Epiphany Proudfoot (Lisa Bonet), who was conceived during her relationship with Favorite. Epiphany is equally reluctant to speak, and so Angel locates Toots Sweet (Brownie McGhee), a blues guitarist and former Favorite bandmate. After witnessing Toots at a voodoo ceremony attended by Epiphany, Angel uses force to extract details of Favorite's last known whereabouts from Toots. In the morning, the New Orleans police inform Angel that Toots was murdered after he left; Angel later finds Margaret murdered in her home and her heart removed with a sacrificial knife. Epiphany stops by Angel's hotel and they have sex; during this time she reveals that Johnny Favorite was considered an extremely evil man who turned on everyone he knew. Angel suspects that Favorite is in hiding and killing off his former friends to prevent his discovery.
Angel forces an attacker to take him to his employer, who is actually Ethan Krusemark, a very wealthy and powerful Louisiana patriarch and father of Margaret. Krusemark invites Angel into a shed at his racetrack and in a heated conversation, reveals the final horrible news to him about Favorite: Favorite was a very powerful magician who, with the assistance of the Krusemarks, conjured and sold his soul to Lucifer in exchange for stardom, but afterward sought to renege on the bargain. Using an obscure rite and the help of his now-dead friends, Favorite kidnapped a soldier, murdered and cannibalized him in a ritual killing to steal his soul and assume the man's identity, but his sudden conscription and the amnesia from his injuries ruined the plan's fruition. The Krusemarks released him into Times Square after sneaking him out of the hospital and hoped for the best. Angel has a panic attack upon hearing this and ducks into the bathroom, wanting to know who the soldier was; he emerges to find Krusemark's body in a boiling gumbo cauldron and flees to Margaret's home to search for the soldier's personal effects. Angel finds a vase and breaks it open, revealing a set of dog tags with the name "HAROLD ANGEL" stamped on them; Angel was and has been Johnny Favorite the whole time.
Louis Cyphre, a pseudonym for Lucifer, appears in Margaret's living room and tells him that Winesap is dead, and that he has known Angel's true identity since the beginning; he has come to collect because of Favorite's attempt to break the contract. Angel refuses to believe him and is convinced that Cyphre is merely posing as the devil and trying to frame him for the murders. Cyphre exposes his true self and unleashes Angel's repressed memories of killing Fowler, Toots, and the Krusemarks in a fugue state induced by Cyphre. When Cyphre disappears, Angel runs back to his hotel and finds the police in his bedroom, looking over the body of Epiphany, who was killed with his pistol (by Angel or Cyphre is unknown) and is wearing his dog tags. With Johnny finally remembering the truth, and since he will be executed for the murders, Cyphre can at last claim what is his: Favorite's immortal soul.
Over the end credits, there is a lengthy sequence of a silhouetted Angel descending in an ancient iron Otis elevator cage, on his to way his execution, and ultimately, to Hell. As the screen fades to black, Cyphre can be heard saying, "Harry" and "Johnny," showing his dominion over their souls