On a hot Friday afternoon in Phoenix, Arizona, Marion Crane (Janet Leigh) spends her lunch hour in a hotel room with her lover, Sam Loomis (John Gavin). Marion is tired of meeting Sam on the sly and voices her hope that they can legitimize their relationship. However, Sam cannot afford to marry Marion at the moment due to his ongoing alimony payments to his ex-wife and being saddled with his father's debts. The issue remains unresolved; Marion goes back to work and Sam returns to Fairvale, California, where he lives and runs a hardware store.
Later that afternoon, Marion impulsively steals $40,000 cash from the real estate office where she works and decides to drive to Fairvale and surprise Sam. On the way, Marion gets lost and ends up at the remote Bates Motel. As it is rainy and dark, she decides to check in for the night. There doesn't seem to be anyone working at the office, but Marion sees an old woman in the window of the house next door. She honks her horn and a young, handsome man comes out of the house and introduces himself as Norman Bates (Anthony Perkins). He explains that Marion is their only guest; the Bates Motel doesn't get many visitors since the main highway moved. Norman offers Marion Cabin 1 and dinner up at the house.
Norman leaves Marion to unpack her things while he prepares dinner. Suddenly, Marion hears the stern voice of an elderly woman coming from the Bates home. It's Norman Bates's mother, who is refusing to let her son bring Marion to the house, accusing him of having a "cheap, erotic mind." Marion watches Norman emerge from the house with a tray. He is clearly embarrassed, explaining that his mother is "not herself today." Norman suggests that they eat in the parlor behind the office instead. As Marion eats, Norman shares his philosophy that all people are enclosed in their own private traps, from which they are fruitlessly trying to escape. Norman's trap is living with and taking care of his overbearing mother. He explains that Mrs. Bates has dealt with a lot of grief in her life - first, Norman's father died, leaving her to raise her son alone. She eventually met a new man, who convinced her to buy the motel, but then he also died. Now, Mrs. Bates has nobody but Norman.
After Marion has retired to her cabin, Norman uncovers a hidden peephole in the parlor wall and watches Marion undress. As soon as she is gone from sight, Norman storms back to the house. Meanwhile, Marion takes a shower. As she bathes, a figure appears behind her. Then, in one of the most famous scenes in film history, an old woman rips the curtain aside. The attacker's face is obscured as she lifts her knife in the air and stabs Marion multiple times. Marion screams, but to no avail. Her deed done, the woman leaves, and Marion dies.
Norman, realizing what his mother has done, rushes out of his house. He is horrified to see Marion dead on the floor of the bathroom, but forces himself to clean up the mess his mother has made. He places Marion's body in the trunk of her car, along with all of her belongings - including the folded up newspaper containing the stolen money. Then, Norman drives the car into a nearby swamp and watches as it sinks from view.
The next day, Lila Crane (Vera Miles) comes barging into Sam Loomis' hardware store in Fairvale looking for her sister, but Sam hasn't seen her. Soon thereafter, a private detective, Milton Arbogast, arrives; he is also looking for Marion. Sam and Lila wait at the hardware store in case Marion returns, while Arbogast investigates every hotel and motel in the area. Finally, he reaches the Bates Motel. Norman innocently tells Arbogast that nobody has stayed there in weeks. When Arbogast asks to see the guest registry, though, he finds the name "Marie Samuels", which is clearly Marion's alias. Norman "suddenly remembers" Marion, and tells Arbogast that she came in on a rainy night and left early the next morning. He hints that his mother met Marion, but will not let Arbogast speak to the old woman. Unsatisfied but stuck, Arbogast leaves. He calls Lila and Sam from a pay phone and expresses his suspicion of Norman. He says that he will go back to the motel to speak to Mrs. Bates and then meet them at the hardware store in an hour or so. After hanging up, Detective Arbogast returns to the Bates Motel. He goes into the office, but Norman Bates isn't there, so he decides to go into the Bates house, where the lights are still on. Just as Arbogast reaches the top of the staircase, Mrs. Bates comes rushing out of the door with her knife raised. She stabs a shocked Arbogast; he tumbles down the staircase and lands on the ground, where Mrs. Bates finishes him off.
Back at the hardware store, Lila has a bad feeling - Arbogast said he'd be back in an hour but it's been three. Sam tells Lila to wait at the hardware store in case Arbogast returns; he knows where the Bates Motel is so he will go there to see if he can track down the detective. Meanwhile, Norman is at the edge of the swamp again, insinuating that he has gotten rid of Arbogast's car and body the same way he disposed of Marion's. Sam arrives at the Bates Motel, and he calls out Arbogast's name. Norman hears Sam's voice, but he does not move to welcome his new visitor. Sam returns to the hardware store with no news of Arbogast, but says that he did glimpse the old lady in the window. Sam suggests that he and Lila go and see the local Deputy Sheriff, Al Chambers.
Sam and Lila explain their conundrum to Sheriff Chambers, who is not pleased with their late-night visit. Chambers sarcastically points out to Sam and Lila that Arbogast couldn't have gone back to see Norman Bates's mother because the old woman has been dead and buried for the past ten years. In the only murder-suicide on Fairvale's ledgers, Chambers recalls, Mrs. Bates poisoned her lover when she found out he was married and then took a helping of strychnine herself. Mrs. Chambers adds that Norman found the bodies of his mother and the man together in bed. Sam, however, has seen an old woman in the window of the Bates house, and presumably, so had Arbogast.
Back at the Bates house, Norman carries his protesting mother into the fruit cellar to hide, insisting that someone else will come looking for Marion and Arbogast.
The next morning, Sam and Lila go to the Bates Motel themselves, pretending to be man and wife. Once Norman has checked them into a cabin, Lila shares her theory that Norman Bates took the $40,000 from Marion to save his failing business, and Arbogast found out, but somebody stopped him from revealing the truth. Sam approaches Norman in the office and distracts him so that Lila can sneak into the house. She enters Mrs. Bates's room, but nobody is inside. One side of the bed is deeply indented in the shape of a body, and the closet is full of an old woman's dresses. Back in the office, Sam openly accuses Norman of stealing the $40,000. Suddenly, Norman realizes that Lila has gone into the house and panics. He knocks Sam over the head with a vase and runs towards the house. Lila sees him coming and hides.
Norman enters the house and rushes upstairs, thus giving Lila the chance to continue down into the cellar. When she reaches the dank and dusty room, she sees the figure of an old woman slouched in a chair, her back turned to Lila. Lila approaches her slowly, saying, "Mrs. Bates." She touches the old woman's shoulder and turns her around - revealing that it is only a skeleton in a wig and a dress. Lila screams. Just then, Norman charges into the cellar wearing a matching grey wig and one of his mother's dresses, he has a knife in his hand and a maniacal grin on his face. Before he can attack Lila, however, Sam comes in, wrestles Norman to the ground, and disarms him.
That night, a crowd is gathered in front of the Fairvale County Courthouse. Inside, Al Chambers is sitting with Sam and Lila, while Dr. Fred Richman (Simon Oakland), a psychiatrist, explains that Norman Bates no longer exists. His "mother" persona has taken over and has confessed to murdering Marion and Arbogast and hiding their cars in the swamp. Richman explains that when Mrs. Bates was alive, she was clingy and demanding. When she took a lover, Norman became jealous, which drove him to kill both of them. After committing matricide, Norman stole his mother's corpse, hid her body in the fruit cellar, and convinced himself that she was still alive. He had conversations with his mother, and at times, became her completely. Because he was so jealous of his mother when she had a boyfriend, Norman imagined that this mother would be equally jealous of his sexual needs. Therefore, whenever Norman found himself attracted to a woman, the "mother" side of him would take over and "go wild." Dr. Richman points out that Norman was attracted to Marion, and therefore, his "mother" became jealous and killed her.
Richman reveals that Norman did not even know about the $40,000 and that it's likely in the swamp. "These were crimes of passion, not profit," he says. Later, we see Norman sitting on a stool in his empty cell. His mother's voice echoes in his head, regretting that she turned in her own son. "They'll put him away now, as I should have, years ago," she says. She refuses to take responsibility for the murders and criticizes Norman for trying to blame her, since she's helpless and innocent. A fly lands on Norman's hand, and his mother's voice crows, "let them see what kind of person I am. I'm not even going to swat that fly."