The film opens with an aerial scene of the Florida Keys in the 1940s. Scrolling text says: At the southernmost point of the United States are the Florida Keys, a string of small islands held together by a concrete causeway. Largest of these remote coral islands is Key Largo.
A bus is crossing a bridge and is overtaken by a sheriff's car, which pulls the bus over. Sheriff Ben Wade (Monte Blue) speaks to the driver through the window while Deputy Clyde Sawyer (John Rodney) walks through the bus. Sheriff Wade advises the driver they are looking for a couple of Indians that broke out of jail and describes them as young bucks in fancy shirts. He asks the driver to phone his office if he sees them. After the police leave, the driver turns and tells Major Frank McCloud (Humphrey Bogart) seated behind him that the Indians must be from around here, as they always return home. "Home being Key Largo", says McCloud.
The bus resumes its trip and pulls up at the Largo Hotel. A sign indicates "Largo Hotel - James Temple, Proprietor". McCloud departs the bus and walks into the hotel. A man (Harry Lewis) is reading the paper in the lobby, but no one else is around. Frank rings the bell at the front desk. The man reading the paper asks Frank if he wants something and Frank asks for Mr. Temple. The paper-reader tells him he isn't here, the hotel is closed, and he doesnt know when Mr. Temple will be back. Frank wanders into the adjacent bar to find a woman and several men listening to a radio. Frank asks for a beer and is told by the people at the bar, and again by the paper-reader who followed him in, that the hotel is closed in the summer, everything is closed. The woman, however, insists that the man standing behind the bar give Frank a drink, which he reluctantly does.
Frank thanks the woman and sits down next to her, where he sees she is clearly intoxicated. She is glued to the radio and listening to a horse race, following along on a racing form. The buzzer behind the bar goes off and a man at the bar says "that's him", whereupon the man behind the bar pours a drink and hands it to paper-reader. The woman says she'll bring it up, but the man seated at the bar says "when he wants you he'll send for you". The woman engages Frank in speculation about the next race and tells the man behind the bar, who we now know as Angel (Dan Seymour), to give Frank another drink. Frank lights a cigarette as the drunk woman rambles on about her handicapping strategy. She asks Frank his name and he tells her, along with his breeding lineage. She introduces herself as Dawn. Gaye Dawn (Claire Trevor). Meanwhile, paper-reader returns from upstairs and tells Gaye "he wants you". She excuses herself and stumbles through the lobby, making up her face as she goes.
The men at the bar ask who Frank is, and tell him once again that the hotel is closed and wont be open for another month. Frank asks them what they're doing here, and they say they are here by special arrangement. Frank says he is not interested in staying, he just wants to see Mr. Temple. One of the men at the bar tells him hes out at the boathouse. Frank picks up his hat and bag and heads out.
Out on the pier behind the hotel he meets James Temple (Lionel Barrymore), who is wheelchair-bound. When Frank introduces himself, Mr. Temple yells for his daughter Nora Temple (Lauren Bacall), who is tying up a small boat at the pier. Mr. Temple introduces Nora as George's wife and Frank tells her that he and her husband were in the same outfit overseas. The three make small talk about life in the Keys and Frank tells them he knows a lot about the Keys from conversations with George. Frank tells them he is just passing through on his way to Key West, but at Mr. Temple's insistence, agrees to stay the night in George's old room.
As Nora heads back inside, she passes Sheriff Wade and Deputy Sawyer, who have just arrived. The police ask Mr. Temple if hes seen the Osceola brothers. He tells them no, and introduces Frank as his son's Commanding Officer. Deputy Sawyer tells Mr. Temple they want to look around for the Osceola brothers, and Mr. Temple tells them they are not there and suggests he look for them in the mangroves or in the water, or wait for them to give themselves up. Deputy Sawyer insists, but Sheriff Wade tells him that Mr. Temple's word is good enough for him, and the policemen depart. Mr. Temple tells Frank that the two Indian brothers grew up with his son George and were good people who did nothing more than get drunk and stir up some trouble in Palm Grove. He says that he's sent word for them to give themselves up - "not that I know where they are, mind you".
Temple and Frank head back inside, where Temple formally introduces paper-reader to Frank as Edward Bass, and the man behind the bar as Angel Garcia. Temple tells the men that Frank was his son's Commanding Officer in the Italian campaign and that George was killed in the Italian campaign.
Suddenly there is a disturbance from upstairs, Gaye screams, and the third man from the bar is seen shoving Gaye into a room. Frank asks why he hit her and he tells Frank shes a lush and that a sock in the kisser is the only thing that will bring her out of it. Nora tells Frank his room is ready and takes him there.
Alone with Nora, Frank asks her about the guests, and Nora tells him the one they just saw, Richard "Curly" Hoff (Thomas Gomez) and Gaye got there first about a week ago. The Temples told them they were closed, but were offered so much money for a week they could not turn it down. Mr. Brown and the others arrived in a big boat four days ago. Frank asks which one is Brown, and Nora tells him he's in room 11 but only comes out at night, and he must be rich because the others jump at his command. Frank thinks it's odd that they chose to set down in Key Largo in this time of year with the extreme heat. Nora says they'll be leaving in a day or two so she doesnt care.
Nora asks Frank if he was with George when he died and Frank tells her yes, but George did not suffer and never knew what hit him. Nora leaves Frank, and Curly stops in to introduce himself and apologizes for the brusque treatment in the bar. He explains they are here on a fishing trip from Milwaukee, a trip they planned for a year, and one guy screwed up the whole trip by bringing a lush woman with him. He says the woman spoiled the whole trip. Frank mostly ignores him coming down the stairs, apparently not happy about his treatment of Gaye in the upstairs hall. Curly offers him a drink, but Frank declines. Meanwhile, Nora takes a call and finds that a hurricane is on its way. She leads Frank to Mr. Temple's room.
Temple and Nora ask Frank about George, as all they had was a letter from the War Department. Frank tells the Temples that George was a born-hero and tells them a few stories about George's heroism in Italy. He tells them that George talked incessantly about the Temples, including telling Frank some personal stories about Nora and his father that Frank relates to them. James asks where George is buried and Frank describes it. The Temples express their gratitude to Frank, who takes his leave.
With the storm coming, Frank and Nora head out to secure some boats, and Nora asks what brought Frank to the islands. Frank says he is thinking of maybe settling down and making a living there. As they approach the boats, Curly shows up and introduces Frank to another member of their party, Ralph Feeney (William Haade). Frank and Nora secure a boat to the pier. Nora asks where Frank learned about boats and Frank tells her his first sweetheart was a boat. Curly asks Frank what he thinks about a large boat just offshore and Frank tells him its a nice boat, but should be secured away from the reef with the storm coming. Nora watches Frank with admiration as he ties up the Temples' boat. As they finish up, an Indian family arrives in several small boats, including a very old woman (Felipa Gomez). Nora explains that the Indians often stay with them when theres a storm. The last two Indians off the boat are Tom Osceola (Jay Silverheels) and John Osceola (Rodd Redwing) the Indians the sheriff is looking for. The Osceolas tell Nora they are here to give themselves up to the police, if thats what Mr. Temple thinks is right. Nora tells them to go inside and her Dad will call up to Palm Grove.
Nora and Frank make small talk about how she met George. Meanwhile, the wind starts to blow and it begins to storm. Nora heads inside to start preparing for the storm as the fishing party mills about in the lobby and bar. Once again Curly tries to get Frank to drink with him. Ralph is obviously concerned about the hurricane, but Curly makes light of it and mocks Ralph.
Mr. Temple comes into the lobby escorted by the Osceola brothers. He asks if anyone has seen Sheriff Wade, as his car is outside. Mr. Temple tells the Osceolas that maybe THEY should go looking for the Sheriff instead. Ed Bass, who Curly calls "Toots", reads the paper and tells silly jokes from the paper. Mr. Temple asks Frank, who is securing some doors, if he has seen the police, and Curly once again tries to get everyone to have a drink. The Temples and Frank once again decline. As Nora continues to prepare, Curly tells Ralph to go put up the windows in the car, but Ralph, obviously even more concerned, says "no way".
The phone rings and Curly tells no one to answer it. He answers it himself and tells the caller that Mr. Temple is not here, and neither is Nora. Mr. Temple and Nora approach and Curly tells the caller that if Sawyer shows up he'll have him call right back. Nora tries for the phone, Curly snatches it away, and when Frank moves on Curly, both Curly and Toots pull guns on him.
The scene switches to a man in a bathtub (Edward G. Robinson), reading a paper, smoking a cigar and having a drink. He gets out of the tub as Curly enters his room and tells him that the soldier tried to get rough with them, and they had to show him their guns. The man puts on a robe as Curly tells him it was the law on the phone looking for Sawyer. We then see that Sawyer, who has apparently chosen to ignore Sheriff Wade's direction to not snoop around, is in the bather's room, bleeding from the head, and we now realize that the call was apparently Sheriff Wade looking for him.
Mr. Temple calls for Brown, the man in the tub, and with the whole gang in the lobby, verbally accosts them and ridicules them. He asks if they are thieves here to rob him, to which Toots replies "thats right, we're here to steal all your towels". Brown tells them that he doesnt want any trouble for anyone and asks Temple to act sensible; he'll be gone in a couple hours. He tells Temple that they will be HIS guest for a little while.
Meanwhile, Sawyer begins to come around and walks out of Brown's room into the lobby, to the surprise of Temple and Nora. He says "you wont get away with this, Rocco" and is tripped and sent sprawling by Toots. Realization dawns on Frank's face as Temple asks why they hurt Sawyer ("because hes a cop"), and Frank suddenly recognizes Mr. Brown as Johnny Rocco.
Frank tells Mr. Temple that Johnny Rocco is a notorious gangster. Temple says they threw Rocco out of the country. Temple then tells Rocco he should have been exterminated not deported, and Frank intervenes on Temple's behalf and flatters Rocco for his success in everything from running numbers to booze, as he built his criminal empire. Rocco, flattered, ignores Temple. Temple, however, continues to verbally assault Rocco as Frank continues to try and shield the Temples from Rocco.
Rocco questions Frank about his war service and Frank downplays his role and says he was no hero and that he only did what he had to do in the war. Meanwhile, Rocco and Temple trade verbal assaults. Rocco taunts Temple until he rises from his chair and collapses trying to hit him. Nora tries to attack Rocco, scratching his face, but Rocco pins her arms behind her and kisses her instead. Ralph then arrives and tells Rocco that Miami wants him on the phone. Rocco departs and Frank and Nora help Temple back to his chair.
Ralph tells Rocco a bunch of Indians want in from the storm and Rocco tells Ralph not to let them in. Rocco takes the call, from a man named "Ziggy". There is a knock on the door and Ralph answers it. It's the skipper of the boat he arrived in (Alberto Morin) and Ralph lets him in, but pushes the waiting Indians back outside. Meanwhile, Rocco is just hearing about the hurricane on the phone, but tells Ziggy "it's got to be tonight" and he'd see him in a couple hours.
The Skipper tells Rocco that the boat must leave now, the storm is too dangerous. Rocco threatens him with a gun and the Skipper acquiesces and tells him OK.
Meanwhile, Sawyer is telling the group that he came back looking for the Osceola boys. He says he ran into Toots and Curly in the lobby, grew suspicious, and put in a call to Sheriff Wade, but the lines went out before the call went through, and the next thing he remembers, he awoke in Rocco's room where he was promptly knocked out again.
Rocco re-enters and tells the gang that everything is OK in Miami, and that the folks in Miami are leaving right away. He tells Sawyer that he's surprised that he EVER woke up after the way Toots worked him over. He sits down to have Angel give him a shave as he continues to taunt Sawyer about not being able to take him down. Rocco tells him he was too much for the big city and federal cops, and no hick cop like him will take him down. Rocco tells stories of how he once controlled politicians and cops alike. He rises from his shave, sees Nora in the mirror and tells how he once knew a "wildcat like her" named Maggie Mooney, but he had to change her name for professional reasons and that she was now Gaye Dawn. Rocco then approaches Nora and whispers in her ear. Nora is obviously revolted, but Rocco follows her as she walks away and whispers to her again. She turns to confront him and Temple tries to rise from his chair but is restrained by Toots. Rocco spins Nora around to face him and she spits in his face.
Frank comes and leads Rocco away as Temple taunts him further. Frank tells Rocco to come on over, he'd like to spit on him too. Rocco, his rage building, tells Curly to give him a gun, which he does. The gang tells Rocco to smack Nora, but Frank tells the gang that spanking isnt good enough for Rocco, he wants to kill her, but if he killed her he'd have to kill all the witnesses too, including the gang. But he needs the gang, so he wont kill anyone just yet. Rocco is upset that Frank sees through him. Curly commends Frank for defusing the situation.
Meanwhile, Gaye returns and wants to know what's going on and wants to start drinking again. It appears that she's missed the past several hours as she doesnt know whats going on. She is growing agitated from not having a drink, but Angel tells her the boss said no more. She gets upset and begins to curse Rocco, but just then, he re-enters the room, having dressed. Gaye sees the scratch on his face from Nora, and suddenly realizes what she missed.
Rocco confronts Frank and asks him if he has a million dollars. When Frank says no, Rocco asks him why not, he thought he was a wise guy, and Frank says its because he was educated in the practical things, unlike Rocco who was just the opposite. Suddenly the wind blows a window open. Rocco wonders aloud if a car can get through the storm, and Gaye tries once again for a drink.
Rocco and Frank continue to feel each other out. Frank tells Rocco that all he wants is more, more, more and that all he wants, himself, is a world where there is no place for the Johnny Roccos. Rocco offers to give him his chance and hands Frank a gun while pulling one of his own. He tells Frank here's his chance to get his wish, but he's got to die for it, as Rocco is aiming at his belly. He taunts Frank to shoot him as Temple tells him to kill him. Rocco taunts and taunts, and Frank is egged on by Sawyer as well. Rocco tells Frank he must not want it enough, and Frank throws the gun down, saying "one Rocco, more or less, isnt worth dying for."
Temple says to give HIM the gun, and Rocco says no, he's afraid he'd use it and one old man, more or less, isnt worth dying for. Rocco insinuates that Frank is a coward and that's how he survived the war. Suddenly, Sawyer springs to his feet and grabs the gun Frank discarded and levels it at Rocco. He backs toward the door and tells Rocco he can stop him, but HE'S got to die first. He tells Toots and Angel to get out of his way and continues toward the door, holding the gun on Rocco. As Sawyer gets to the door and opens it, Rocco shoots him. Sawyer shoots back, only to find that the gun he has, the one that Rocco gave to Frank, is not loaded. Rocco shoots him again and he falls out of the doorway. Rocco tells Nora that yes, the gun wasn't loaded, but "our hero didn't know it". Temple says Frank knew the gun wasn't loaded, Frank said he did not, Toots said Frank was just a coward, but Gaye gets it right and says that Frank was smart, because he knew what happened to Sawyer would have happened to him and "it's better to be a live coward than a dead hero".
Curly and Angel take Sawyer's body out in a boat to dump it at sea, while Ralph cleans up the mess where Sawyer fell dead. The phone rings and Rocco answers it. It's Ziggy, and Rocco is upset because Ziggy is not there yet. He says he risked his neck to come from Cuba with "the shipment" and he knows a dozen guys who will take it if Ziggy isnt there by ten o'clock, two hours from now. The power then goes out in the hotel and Toots herds everyone downstairs at gunpoint. Gaye makes her way to the bar and pours a drink, but Rocco tells her he told her no drinking. Angel and Curly return from disposing of Sawyer and Rocco tells them to go get the shipment.
Rocco pours out Gaye's drink and tells the whole crew, now assembled in the bar, how she's an alcoholic and if there's one thing he can't stand its a dame that's a lush. She wasn't like that eight years ago. She tells him he hasn't changed and is still as mean as can be. Rocco says that reminds him of a song she used to sing, and humiliates her about how she could have been a star. He tells her if she sings her old song he will let her have a drink. Gaye tells the group about her days as a singer and starts singing Billie Holiday's song "Moanin' Low". She sings very poorly and humiliates herself even further, to the bemusement of Rocco. When she finishes, she runs to the bar for her drink, but Rocco denies her anyway. Frank then goes behind the bar, pours a scotch and gives it to Gaye who slams it down. Rocco slaps Frank three times in the face. Frank ignores Rocco and tells Gaye she's welcome.
As Toots and Curly sit down to play gin and wait, the hurricane gets worse and the building starts shaking. Rocco asks Temple "how bad can it get?", and Temple tells Rocco of the hurricane of 1935 that had 200mph wind and killed 800 people. Nora apologizes, quietly, to Frank for calling him a coward and he tells her he's not a hero. But she tells him that she knows otherwise, and she knows from George's letters that Frank was really the hero that Frank told her George was.
With the storm worsening, Rocco begins to get more and more worried and nervous. The hotel creaks and shakes and Frank smiles as he senses Rocco's fear. Rocco tells Temple he's a liar, that the story of the 1935 hurricane never happened. Temple plays on his fear and tells him how the storm was so strong it blew a train off the tracks. Frank taunts Rocco and asks him why he doesn't just show the storm his gun and threaten to shoot IT. Temple prays for a wave to kill them all. Rocco pulls his gun on Temple, but Frank intervenes as Rocco puts the gun in Frank's belly and pulls the trigger, but Rocco apparently has the unloaded gun now. The tension is broken as a tree comes crashing through a window. The scene switches to outside and we see waves crashing over the island and the Indians huddling on the hotel's porch begging to be let in.
Back inside the hotel, some time has passed and the storm is abating. Frank tells Nora pretty soon nothing will be left but some trash on the beach. Nora asks if she'll ever see Frank again, and Temple tells Frank he'd be honored if he came down, as he considers him family. It is then that Toots comes into the lobby yelling for the boss to tell him that the boat is gone. The skipper has apparently taken off without Rocco and the gang, who are now stranded in Key Largo. Rocco says not to worry, there is another boat out there and that Frank will run it for them.
The Osceola brothers appear at the door, yelling at Mr. Temple for denying their family shelter from the storm. Rocco had told Temple he sent them away. Temple tells Rocco they could have died out there, but Rocco does not care. He turns to Frank and tells him that he will be taking them to Cuba. Frank says he will not, and Rocco will not kill him because hes the only way off the island. Rocco then threatens him with beating and torture at the hands of Toots.
There is a knock on the door and it is Sheriff Wade asking for Temple. Nora answers the door and lets him in. Wade, it turns out, is looking for Sawyer, and Nora tells him they havent seen him. Wade says that's funny, because Sawyer called from there a short time ago. No one in the hotel speaks up and Wade's suspicion grows. Curly suggests that Sawyer must have stopped in, called, then left and is stuck in the storm. Wade then asks if they've seen the Osceolas, who they all deny having seen, as well.
Wade leaves the hotel and as he gets back in his car and turns on the lights, he sees Sawyer's body, which the storm has carried back ashore. He investigates and sees that Sawyer has been shot several times. As he heads back for the hotel, he speaks to Rocco, who the Sheriff thinks is "Mr. Brown". Rocco tells him he didn't want to rat out the Temples, but the Indians were there during the storm, had just left. He insinuates the Osceolas killed Sawyer. Sheriff Wade runs toward the pier and encounters the Indians. He finds the Osceolas, who take off running. Wade shoots both of them dead.
Rocco comes back into the hotel and is followed, after a few minutes, by Sheriff Wade, who tells them that their Indian friends killed Sawyer. He tells Temple he will hold him accountable as an accessory to the murder. Wade then tells Temple he killed the Osceola brothers. Wade begins to take a report and questions Rocco and his gang. He also questions Frank, whose anger is beginning to visibly show.
As Wade questions the hotel group, Ziggy and his gang finally arrive, pretending to be tourists, and Sheriff Wade takes his leave. Toots herds Frank and the Temples into another room as Rocco and Ziggy exchange pleasantries and laughs. Curly retrieves the package for Ziggy and opens it up to reveal a large pile of money. Ziggy examines it, and it's clear it is counterfeit money that Rocco has had printed for Ziggy. Satisfied with the product, Ziggy pays Rocco with a bag of (presumably) real money.
While the transaction is going down, in the other room, Gaye and Nora implore Frank to not go with Rocco as Rocco will kill him. They urge him to make a break for it in the dark. Frank tells them that his head tells him to do that, but his heart tells him otherwise.
The transaction concluded, Ziggy and his gang take their leave. Rocco tells Ralph to bring everything down, including the soldier's gear. He asks Frank one last time if he will take them, and tells Toots to work him over. Frank relents and says he will come along. Rocco asks Nora if she wants to come too, but she ignores him, and stares at Frank. Rocco puts on his coat and slips a gun into the pocket. Gaye asks where her things are, and Rocco tells her she isnt going back with him, gives her some money and tells her "that ought to be enough to stay drunk for a good long time".
Gaye lunges for Rocco, hangs all over him, and begs him to take her with him. She promises to stop drinking and threatens to commit suicide if he leaves her. She claws at him repeatedly, but he finally pushes her away where she runs into Frank and we see she has taken the gun from Rocco's pocket. She slips it to Frank, who hides it in his hat. The gang depart and head for the Temples' boat. Nora and Gaye watch to see if Frank makes a break for it, but he does not and gets on the boat with the gang.
Frank takes command of the boat and they depart the dock as Nora and Gaye return to the hotel. Temple has tried to phone for help, but the lines are dead. Back on the boat, Curly asks Frank how they're doing, and Frank says they're right on course. Curly goes to the rear of the boat, where Toots is seasick and hanging over the side near the stern. Ralph is there with him, and Curly tells Ralph that Rocco and Angel are below deck sleeping. Curly returns to the wheelhouse and also goes down below.
Below deck, there is a radio on and Angel, Rocco and Curly hear a radio report looking for the missing boat. Curly asks Rocco if it was a good idea to leave Gaye behind as she might squeal and get Ziggy in trouble. Rocco says "Well...?" as if that were his plan all along. Curly realizes this was the plan and they laugh.
Back above deck, Frank checks his gun and then kills the throttle to the boat. He asks Ralph to look over the stern to see if the propeller is fouled with kelp. As Ralph leans over, Frank suddenly guns the throttle and cuts the wheel hard, tossing Ralph overboard. Toots, still seasick, realizes what has happened and reaches for his gun. Frank shoots him. Hearing the gunfire, Rocco, Angel and Curly start getting out of their bunks. Toots returns fire and shoots Frank in the side, but then falls over dead. Frank runs to the stern to retrieve Toots gun, and as he does, Curly comes up from below decks to see what happened, and Frank shoots him as he comes up the stairs. Curly falls down the stairs, and Frank climbs onto the roof of the wheelhouse.
Curly stumbles into the cabin and Rocco asks him what's the matter, but Curly falls over dead. Rocco goes for his gun and finally realizes that it is gone, and that Gaye lifted it from his pocket in her farewell scene. Rocco retrieves Curly's gun from his dead hand instead and heads for the stairs. He yells for Toots and Ralph with no answer, then for "Soldier". Frank is on the roof of the wheelhouse looking down through the skylight, watching the stairwell. Rocco tells Angel to go upstairs. Angel says "no, he will kill me", but Rocco tells him there is nothing to fear, as Toots has killed Frank. Angel tells him if that's the case, then HE should go upstairs. Rocco responds by killing Angel, leaving only him and Frank alive on the boat.
Rocco heads for the stairs and appeals to Frank, offering him a 50/50 stake as a partner. Frank answers only with silence. Rocco then says he knows what Frank wants, the whole stake for himself. Rocco then offers him ALL of the money and throws the bag through the stairwell door. Frank still does not respond. Rocco then has another fit of rage and threatens Frank, saying he's "not big enough to do this to Rocco" and he will kill him. Frank still does not respond.
Rocco then says he knows what it is - Frank doesnt trust him because hes got a gun. So he takes Angel's gun and throws it up the stairs, implying that he is now unarmed. He tells Frank he is coming out now and begins up the stairs. "I got no gun, I'm coming out", he says, attempting to conceal his own gun in the process.
As soon as Rocco crosses the doorway onto the deck, Frank shoots him from above. Rocco, hit, but not mortally, raises his gun, but Frank shoots him a second time. Rocco tries one more time, but Frank fires a third shot and Rocco collapses onto the deck. Frank comes down from the roof and immediately turns the boat around to return to Florida. He ties the wheel in place to hold his course and goes below deck to radio ashore and call for help. He requests help and asks to be connected to the Largo Hotel.
Meanwhile, back at the hotel, Sheriff Wade is there and apparently Gaye has already turned on Ziggy. Sheriff Wade tells them Ziggy and his men were caught heading into Georgia and apologizes to Temple for killing the Osceolas. Gaye tells him it wasnt his fault and that no one is safe as long as Johnny Rocco is alive.
As Gaye leaves with Sheriff Wade, the phone rings. Nora answers it and it is Frank. He tells her what has happened. She is relieved and tells her father that he's coming back to them. She opens a window and sunshine finally streams in. The film ends with Frank steering the boat back to his new home.