Kevin Lomax (Keanu Reeves) is a successful defense attorney in Gainesville, Florida. After successfully defending a scumbag high school teacher who is accused of molesting a young girl named Barbara (Heather Matarazzo), he is celebrating with his wife Mary Ann (Charlize Theron) when he is approached by a representative for a New York law firm, Leamon Heath (Ruben Santiago-Hudson). The Lomaxes go to New York, and Kevin proves his expertise while picking a jury. A sharply-dressed John Milton (Al Pacino) watches him. The jury acquits the defendant.
Heath shows Kevin around the office, and he is distracted by Christabella (Connie Nielsen), a hot lawyer. He meets Milton, and reveals part of his success is due to eavesdropping on juries while they deliberate. Milton shows Lomax the roof, which contains an infinity pool, and quizzes Lomax about his history. A job offer is implied. Heath takes the Lomax's to their apartment, and it is spacious. They meet Heath's wife Jackie (Tamara Tunie).
The next day, Kevin meets the team and Pam (Debra Monk), who hands him his first case. He meets his client, Phillipe Moyez (Delroy Lindo), who performs some voodoo. Kevin begins his research while Mary Ann tries to decorate the apartment. Kevin successfully defends Moyez and Milton is impressed.
The Lomaxes attend a party at Managing Director Eddie Barzoon's (Jeffrey Jones) lavish apartment. Milton flirts with Mary Ann, suggesting she change her hair, and Kevin chats with Christabella. Throughout the story, Milton demonstrates knowledge of many languages, and seems to be able to hear/know everything. Milton brings Eddie, Heath and Kevin to his suite and tells them he wants Kevin for the high-profile murder trial of Alexander Cullen (Craig T. Nelson), a businessman accused of killing his business partner. Eddie and Heath are not happy with the decision. Mary Ann is unhappy that Kevin left her alone at the party and storms off.
Kevin meets Alexander and convinces him that he can defend him. Mary Ann, Jackie and Eddie's wife Diana (Pamela Gray) try on expensive dresses, and Mary Ann has a vision of Jackie as a demon. Kevin consoles Mary Ann, and she screams at him, then cries. They get undressed, and Kevin imagines Mary Ann as Christabella. Mary Ann realizes something is wrong, and they stop.
Kevin conducts a briefing of Alexander, and shows skill. On the way back from a fancy dinner, Kevin, Mary Ann and Kevin's mother (Judith Ivey) meet Milton. Milton tries to charm her, but she is unimpressed. Kevin resists the impulse to meet with Milton and hot women in his suite, but Mary Ann sees through it and gets angry. Kevin's mom tries to convince him to leave and return to Florida.
Kevin begins research and interviews. He finds Eddie working late, shredding documents. Eddie tells Kevin to ignore the activities going on, and mentions Weaver at the Justice Department. Milton shows up and invites Kevin to a boxing match. On the subway, they are accosted by a punk, and Milton tells him (in Spanish) to check on his girl, who is cheating on him. Milton knows details that he shouldn't.
The night continues, with Milton partying and Kevin trying to explain to Mary Ann over the phone. They continue to party. Meanwhile, Mary Ann is awakened by a noise, and finds a child in the apartment. The child is playing with ovaries - Mary Ann's! The next day, Kevin tells her it's a dream, but she is still freaked out. She tells Kevin she can't have children, and thinks he's going to leave her. He's interrupted by the phone.
Alexander tells Kevin he's been unfaithful, and was having an affair during the night of the murder. Milton wants Kevin to quit the case and take care of Mary Ann, but Kevin wants to prove himself. Milton relents.
The trial starts. Kevin's strategy is to make Alexander look awful, so he can later prove Alexander was sleeping with his secretary at the time of the murder.
Eddie later confronts Kevin about his promotion, and threatens to go to the Justice Department. Kevin tells Milton about the threat, and Eddie is chased by phantom joggers, then is mugged by homeless men who appear as demons. Mary Ann watches from her apartment window.
Kevin briefs the secretary, Melissa (Laura Harrington), then learns about Eddie's death. He is perturbed by both the death and the secretary's practice testimony. On the subway again, Milton tells Kevin to go with his gut. Back in the courtroom, the secretary testifies, and Alexander is cleared. Upon returning home, Kevin discovers Mary has gone to a local church and is very ill.
Mary Ann tells Kevin that Milton came to the apartment and had sex with her during the trial. Kevin thinks Mary is crazy, and she shows the wounds all over her body. He takes her to the hospital.
Later, Kevin attends Eddie's funeral, and Alexander arrives. Jackie is interested in Mary's health, and Christabella sits beside Kevin. Kevin imagines Alexander as the scumbag teacher, and leaves the church. He is met by Mitch Weaver (Vyto Ruginis), who tells him that Eddie was going to testify against Milton. He convinces Kevin, but is hit by a car before they can talk more. Milton smirks and boils holy water with his touch.
Kevin goes to visit Mary Ann in the psych ward, and his mom is there. She tells Kevin his father was a NYC waiter, and Mary Ann sees Pam as a demon. She locks the door and slits her throat while Pam looks on. Later, Kevin's mother tells him the truth about his father - it's Milton! Kevin realizes Milton has been watching and helping him all along.
Kevin leaves to see Milton, and Pam reassures him. No one is on the streets as he walks through New York. Kevin confronts Milton in his office and shoots him, but it has no effect. Milton reveals that he indeed is Satan, and Christabella is his half-sister. Milton wants them to take over the firm and conceive a baby. Kevin starts negotiating the deal, and the sculptures come alive. Christabella seduces Kevin, but at the critical moment, he commits suicide by shooting himself in the head.
Enraged, Milton explodes into flames, Christabella dries up, and Kevin grows wings as he falls to the ground dead. Suddenly, the entire scene rewinds back to the opening scene of the movie where Kevin finds himself facing a restroom mirror in the Florida courtroom. Kevin is contemplating defending the teacher whom he knows is guilty. He also finds Mary Ann waiting for him outside the men's room as he returns to the courtroom to begin cross examination of Barbara the victim to discredit her testimony. But as Kevin starts questioning Barbara with the allegations that she may have made up the story about her teacher molesting her, he suddenly stops and announces to the judge and jury that he cannot proceed with the trial and quits as the legal council saying that it's the right thing. Kevin, aware of what has happened to him, realizes that by divine intervention, he has been given a second chance to do good rather then for what he is told to.
As Kevin and Mary Ann leave the courthouse, he is pursued by a reporter (the same one from the restroom at the beginning) to ask him for an exclusive interview about his decision to quit the case and of being "a lawyer with a conscience". Kevin initially refuses, but when the persistent reporter continues to nag him and hands Kevin his business card, Kevin takes it and agrees to phone him later for the exclusive.
As Kevin and Mary Ann walk out of the courthouse, the reporter morphs into John Milton, who smiles and adds the closing line: "Vanity... definitely my favorite sin."