Ex-Major Frank McCloud (Humphrey Bogart) arrives at the Hotel Largo in Key Largo, Florida, where he meets the proprietors James Temple (Lionel Barrymore) and Nora Temple (Lauren Bacall). James Temple was the father-in-law of widow Nora Temple. George Temple was Nora Temple's husband and James Temple's son. George died in Italy, during WWII, where he was in Frank's unit. Due to the lateness of the season, and because of an approaching hurricane, the hotel is nearly empty, with only five guests: the dapper Toots (Harry Lewis), the boorish Curly (Thomas Gomez), stone-faced Ralph (William Haade), servant Angel (Dan Seymour), and an attractive woman, Gaye Dawn (Claire Trevor), who has a drinking problem. They claim to have come down to the Florida Keys for a fishing trip with a mysterious sixth man who spends all his time in his room upstairs.
Rebuffing Curly's attempts to engage him in conversation, Frank meets with Nora and Mr. Temple and tells them where Temple's son George is buried and of his heroism under fire overseas. Nora, in particular, seems taken with Frank, who she says her husband wrote about frequently. The three begin preparing the hotel for the coming hurricane, but are interrupted by Sheriff Ben Wade (Monte Blue) and his deputy, Sawyer (John Rodney), who are looking for the Osceola brothers, a pair of Native Americans who escaped from custody after being arrested on minor charges. Temple promises the lawmen that he will use his influence with the local Indians to get the boys to surrender. Soon after the police leave, the local Seminoles show up seeking shelter at the hotel.
With the storm coming on, Curly, Ralph, Angel and Toots pull guns and take the Temples and Frank hostage. They reveal the sixth member of their party as being their boss, notorious gangster Johnny Rocco (Edward G. Robinson), who had been exiled to Cuba some years before for being an undesirable alien. The gang had discovered Sawyer looking about and knocked him unconscious. As ...