Linnet Ridgeway is a wealthy, glamorous heiress who lives in the English country village of Malton-under-Wode at the manor she recently bought and is planning to improve. Rumor has it that she is engaged to be married to Lord Windlesham, though she is not interested in subsuming herself to someone of higher rank. When her friend Jacqueline De Bellefort asks Linnet to find a job for her poor fiancé, Simon Doyle, Linnet ends up marrying Simon instead. News of the marriage and the couple’s subsequent honeymoon in Egypt reaches around the world. Linnet’s American trustee Andrew Pennington and her British lawyer James Fanthorp both makes plans to head immediately to Egypt. Other characters also make separate plans to go to Egypt on vacation: Tim Allerton and his mother Mrs. Allerton are tired of vacationing in Mallorca; Miss Van Schuyler is traveling with her poorer and younger cousin, Cornelia Robson; and Mrs. Otterbourne is traveling with her daughter Rosalie in order to get inspiration for her romance novels.
At the Cataract Hotel in Aswan, Egypt, the famous detective Hercule Poirot is on vacation when he finds himself approached by Linnet. She explains her problem: Jacqueline has been following her and Simon on their honeymoon. So far, she hasn’t done anything violent, but just her presence has been affecting Linnet’s nerves. Poirot agrees to talk to Jacqueline, though he doesn’t accept any payment—he says he will talk to Jacqueline in the general interest of humanity. Jacqueline confirms that she’s been stalking the couple, but despite Poirot’s urging to give up her plans and not to open her heart to evil, Jacqueline remains steadfast. Simon and Linnet try to secretly leave the hotel without Jacqueline noticing, but ultimately, they end up with her and all the other characters on the Karnak, a Nile steamer boat headed to the Second Cataract and back.
During a stop on the Nile voyage, when the passengers disembark to see some ruins, a boulder falls (or perhaps is pushed) from a cliff, nearly crushing Linnet. Poirot and others immediately suspect Jacqueline, but soon after Poirot sees her coming off the steamer, meaning she couldn’t possibly have pushed the boulder.
The steamer continues to its ultimate destination of Wadi Halfa, where Poirot’s old acquaintance Colonel Race comes aboard. Race says that he is looking for a political agitator who is responsible for several murders and that he has good intelligence that this person will be on the Karnak. The steamer begins its return journey.
One night in the steamer’s dining saloon, Jacqueline begins having too much to drink. She gets angry and shouts at Simon before suddenly pulling a pistol from her bag and shooting him in the leg. Horrified at what she’s done, Jacqueline kicks the pistol under a nearby sofa. Cornelia, who is present for the event, runs to fetch Fanthorp, who walked out just before the shooting, and together they take care of the situation. Simon is brought to the cabin of Dr. Bessner in order to receive treatment. Jacqueline, meanwhile, is placed under the care of Miss Bowers (a nurse attending to Miss Van Schuyler), and she is given a sedative that knocks her out for the rest of the night. Fanthorp then goes back to look for Jacqueline’s pistol, but can’t find it.
The next morning, Colonel Race reveals to Poirot that Linnet Doyle has been shot in her sleep by a point-blank bullet to the head. A letter J is written in her blood near the scene of the crime, and her extremely valuable pearls are missing. Later, Jacqueline’s missing pistol is recovered—it had apparently been thrown overboard into the Nile, wrapped in a velvet stole that belonged Miss Van Schuyler and with a pink-stained handkerchief.
Linnet’s pearl necklace is eventually returned by Miss Bowers, who says that Miss Van Schuyler is a kleptomaniac and had stolen it. But it doesn’t take Poirot long to realize that the returned necklace is in fact only a clever imitation. Poirot and Race continue to investigate the steamer and interrogate passengers—one clue that catches his attention is a bottle of nail polish in Linnet’s room that has “Rose” written on the front but which only has a little bit of darker red liquid at the bottom. Suddenly, during their search, they discover Louise Bourget (Linnet’s maid) dead in her cabin, holding a scrap of money in her hand. Poirot deduces that perhaps she knew something and was trying to blackmail the murderer.
Race and Poirot continue the investigation, with their search leading them back to Simon in Dr. Bessner’s cabin. Simon begins talking about a strange telegram Linnet opened, thinking it said “Ridgeway” when actually it said “Richetti,” meaning it was meant for an Italian archaeologist also on board the Karnak, Signor Richetti. While there, they are suddenly interrupted by Mrs. Otterbourne, who claims she has an important revelation: she knows who the murderer is. Just as she’s about to dramatically reveal her news, however, she is suddenly shot dead. Poirot races to see the culprit, but there’s no one around, just the left behind revolver of Andrew Pennington.
Poirot and Race confront Pennington, who claims to have no knowledge of how his pistol came to be used to kill Mrs. Otterbourne. After pressing him with questions, however, they finally get Pennington to admit that he may have been the one to push the boulder that almost fell on Linnet. He reveals that he was trying to get her to sign some documents in order to get himself out of a bad financial situation (a process that Fanthorp interrupted earlier in the trip). He believed that Simon would be a better business partner because he wasn’t as smart or disciplined as Linnet and would just sign anything without reading it. However, despite his involvement in attempted murder, Pennington insists he didn’t commit any of the actual murders on the Karnak.
Poirot and Race then confront Tim—Poirot reveals that he knows that Tim stole the pearls as part of a jewelry-forging and theft scheme with his cousin, Joanna Southwood. Joana had earlier provided him with the fake pearls by mailing them to him in a cut-out book, and Tim had then swapped the fake pears with the real ones. Poirot gives Tim a chance to return the real pearls before anyone goes searching for them and Tim, who has recently fallen in love with Rosalie, eagerly accepts. Later, after hearing more about the telegram from Signor Richetti that Linnet mistakenly read, Race realizes that Richetti is the agitator he’s looking for.
Finally, Poirot reveals what really happened in the murder of Linnet. Simon and Jacqueline never ceased to be lovers, and they planned the crime, with Jacqueline as the mastermind and Simon carrying it out. In fact, Jacqueline is a good shot who purposely missed hitting Simon’s leg when she shot at him. He then faked being injured using a handkerchief (which was recovered in the stole with the pistol) and red dye (which he kept in the Rose nail polish bottle in Linnet’s cabin). While Fanthorp and Cornelia left Simon alone, thinking he couldn’t move because of his injured leg, in fact, Simon carried out the murder, writing the J himself, then shooting himself in the leg (attempting to use the stole as a silencer), before throwing the pistol overboard.
Louise, however, saw Simon entering Linnet’s cabin to commit the murder, so she attempted to blackmail him and Jacqueline, only to be stabbed by Jacqueline when she went to deliver the money. Jacqueline herself was seen entering the cabin of Louise by Mrs. Otterbourne, leading to another cover-up murder where Jacqueline shot Mrs. Otterbourne, then quickly pretended she’d been in her cabin the whole time.
When confronted by Poirot, Simon instantly confesses. Jacqueline does too, and further explains that Simon had never loved Linnet but had wanted her wealth, and so Jacqueline, who herself loved Simon overwhelmingly, masterminded the entire plan: Simon would marry Linnet, then they would murder her and Simon would inherit the money, and then Simon and Jacqueline would be together.
After the steamer arrives back in Cairo Signor Richetti is taken off first to be arrested. Soon after, Simon is taken off on a stretcher, followed by Jacqueline. Suddenly, Jacqueline produces a second pistol from her shoe, kills Simon with it, and then kills herself. Poirot reveals to Mrs. Allerton that he knew about this second pistol all along, and that he allowed Jacqueline this easier way out than prison, even though it meant that Simon got better than he deserved. Poirot and Mrs. Allerton then watch the new couple Tim and Rosalie, and agree that while many love stories end in tragedy, others offer hope. News of Linnet’s death races around the world, including a pub in her the town of Malton-under-Wode where she bought her manor—the locals discuss the murder briefly, then start talking about a horse race instead.