Amateur Tennis star Guy Haines (Farley Granger) wants to divorce his vulgar and unfaithful wife Miriam (Laura Elliott), so he can marry the elegant and beautiful Anne Morton (Ruth Roman), daughter of a senator (Leo G. Carroll). While on a train to meet Miriam, Haines encounters Bruno Anthony (Robert Walker), a pushy stranger who recognizes Guy from gossip items in the newspapers and wants to discuss his marital problems. During lunch in Bruno's compartment, Bruno tells Guy about his idea for the perfect "criss-cross" murder(s): he will kill Miriam, and in exchange Guy will kill Bruno's father. Since they are unconnected strangers, there is no identifiable motive for the crimes, and therefore no suspicion from the police. Guy hurriedly departs the compartment, but leaves Bruno thinking he has agreed to the deal. Guy accidentally leaves his cigarette lighter behind, and Bruno pockets it. Guy meets Miriam at her work, where she decides to call off the divorce and play the Washington political wife. Guy threatens Miriam, then calls Anne and tells her he wants to "strangle" Miriam.
Bruno arrives in Guy's hometown and follows Miriam and her two beaux to an amusement park, where he strangles her to death. Guy's alibi a college professor who was inebriated when they met cannot remember their meeting on the train. Guy's chances of being implicated increase when Bruno appears repeatedly to remind Guy that he is now obliged to kill Bruno's father.
Bruno sends Guy the keys to his house, a map to his father's room, and a pistol. Soon after, Bruno appears at a party at Senator Morton's house and hobnobs with the guests, much to Guy's apprehension and Anne's increasing suspicion. Using another guest, he demonstrates how to strangle someone while preventing them from screaming; while doing this he sees Anne's younger sister Barbara (Patricia Hitchcock). Her eyeglasses and resemblance to Miriam trigger a flashback, and Bruno really begins to strangle the guest. After a moment he faints, and the frightened party guests pull him off the hysterical woman. Young Barbara rushes to her sister and tells her, "His hands were on her throat, but he was strangling me." Anne puts together the facts of the crime and confronts Guy, who admits the truth.
Guy agrees to Bruno's plan over the telephone and creeps into Bruno's home at night. When he reaches the father's room he tries to warn the older man of Bruno's intentions, but finds Bruno waiting for him instead. Bruno tells Guy that, because he will not complete his end of the bargain, he should take responsibility for the murder which "belongs" to him; to that end he will frame Guy for the murder of Miriam.
Anne visits Bruno's house and tells his befuddled mother (Marion Lorne) that her son is responsible for murder, but the woman does not believe her and will not admit how dangerous her son is. Bruno overhears the conversation and lets Anne know that he has Guy's lighter and that he plans to plant it at the scene of Miriam's murder. Anne and Guy devise a plan so that Guy can beat Bruno to the scene of the crime while still appearing in a tennis match elsewhere.
Guy wins the tennis match but takes much longer than expected; likewise, Bruno is delayed when he drops Guy's lighter down a storm drain and must force his arm down the drain to recover it. Guy arrives at the amusement park while Bruno is still waiting for sunset. The two men struggle on the carousel. The police arrive and fire on Guy, but a stray shot hits the carousel operator. The ride spins wildly out of control and crashes, and Bruno is mortally wounded. He tells the police that Guy committed the murder, but as he dies, his hand opens to reveal the incriminating lighter. An amusement park employee remembers Bruno's previous visit the night of Miriam's death, implicating Bruno as the murderer.
Reunited with Anne on a train home, Guy is asked by a friendly clergyman seated near them if he is Guy Haines. Guy, remembering this is the way Bruno started their fatal conversation, quickly leaves the club car with Anne, perplexing the clergyman.