Ex-Major Frank McCloud (Humphrey Bogart) arrives at the Hotel Largo in Key Largo, Florida, to visit the family of George Temple, a friend from the Army who had served under him and was killed in the Italian campaign. He meets with George's widow Nora Temple (Lauren Bacall) and his father James (Lionel Barrymore), who owns the hotel. Because the winter vacation season has ended and a major hurricane is approaching, the hotel has only six guests: the dapper Toots (Harry Lewis), the boorish Curly (Thomas Gomez), stone-faced Ralph (William Haade), servant Angel (Dan Seymour), an attractive woman, Gaye Dawn (Claire Trevor) who suffers from alcoholism, and a sixth man who remains secluded in his room. They claim to have come to the Florida Keys for a fishing trip and have a charter boat waiting.
Rebuffing Curly's attempts to engage him in conversation, Frank (as planned) meets with Nora and James Temple. He tells them where George is buried and recounts George's heroism under fire. Nora seems taken with Frank, stating that George frequently mentioned Frank in his letters. Frank reveals to them the intimacy that is the experience of men in combat. They learn that George had told Frank personal and confidential details about the Temples (father and daughter-in-law). And Frank had committed to memory the small and cherished details that George had spoken of, to relieve the boredom, stress, and stark terror that was the reality of their moment-to-moment existence in combat.
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 Sheriff's custody after being arrested on minor charges. James 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, among them the Osceola brothers.
With the storm approaching, Curly, Ralph, Angel and Toots pull guns and take the Temples and Frank hostage. They explain that the sixth member of their party is notorious gangster Johnny Rocco (Edward G. Robinson), who was exiled to Cuba some years before for being an undesirable alien. The gang discovered Sawyer looking about and knocked him unconscious. As they are held at gunpoint, Temple lets go a stream of insults toward Rocco, who responds by taunting Temple, explaining how he will one day return to prominence. At one point Rocco gives Frank a pistol and offers to fight a duel with him, but Frank declines, stating that he believes in self-preservation over heroics and that "one Rocco more or less isn't worth dying for." Sawyer grabs the gun and tries to escape, but Rocco shoots him. In the gunplay it becomes apparent that the gun that Rocco gave to Frank was not loaded. Rocco's men take Sawyer's body by boat to deep water and throw it overboard.
Rocco intends to hold the Temples and Frank hostage until his American contacts from Miami arrive to conclude a deal. As the storm rages, the Seminoles, usually sheltered in the hotel in storms, huddle outside as Rocco and his company worry about storm damage and insist the Indians stay outside. Rocco forces Gaye, his former moll, to sing for them by promising to give her a drink after she sings for them. After Gaye sings "Moanin' Low" a capella, Rocco berates her for her poor performance and fading looks and will not give her a drink. Frank goes to the bar, serves himself a drink and gives the drink to Gaye. While Gaye says "Thanks, fella" to Frank, Rocco slaps Frank in the face several times for disobeying his order not to give Gaye a drink; Frank ignores the slaps, and says, "You're welcome" to Gaye. Nora tells Frank the she knows his story about her husband's heroism was false and that Frank was the real hero. Mr. Temple invites Frank to come live with them at the hotel, a prospect that seems to intrigue Nora.
After the storm subsides, Sheriff Ben Wade shows up looking for Sawyer, who had telephoned from the hotel before the hurricane. Temple is forced by Rocco to lie and say that he has not seen the deputy, but as Wade is leaving he discovers Sawyer's corpse floating in the water nearby where it has been blown in by the hurricane. Rocco blames the killing on the Osceola brothers, whom Wade then confronts in the nearby boathouse and kills.
After Wade leaves with Sawyer's body, Rocco's contact Ziggy (Marc Lawrence) arrives to conclude the deal. Rocco sells Ziggy a large amount of counterfeit money and then forces Frank, who has skills as a seaman, to take him and his henchmen back to Cuba on a small boat belonging to the hotel. (The captain of the luxurious yacht on which they arrived has moved it to deeper water to escape storm damage). Rocco pays James Temple for the stay and has his henchmen gather everyone's bags, except for Gaye's. He tells her he will not be taking her to Cuba with him and gives her some money for expenses. Nora and Gaye try to convince Frank to make a break for safety once he is outside the hotel, but he agrees to take the men to Cuba. Gaye appears to make a last-ditch attempt to convince Rocco to take her with him and uses the embrace to steal Rocco's gun, which she then manages to pass on to Frank.
Out on the Straits of Florida, Frank kills the throttle, and knocks Ralph into the water. Toots realizes that Ralph has been killed, and fires at Frank, but the wounded Frank kills Toots. Curly then arrives, but Frank mortally wounds him. Curly then walks down to Rocco and Angel, but dies before he can respond to Rocco. Rocco demands Angel to go up, lying to Angel that Frank is dead. Rocco then kills Angel, and attempts to trick Frank into surrendering. However, Frank is quiet, and is aware of the trick. Rocco comes up, concealing a gun, but Frank notices the gun and shoots him. Rocco is then shot again, and tries one more time, before Frank kills him. Frank then calls the hotel, and James and Nora are delighted that he is coming back. Gaye then reassures Wade that Rocco bears the blame for the murder of Sawyer.
who  try to convince Frank to make a break for safety once he is outside the hotel, but he agrees to take the men to Cuba?
Nora and Gaye