It is evening on Catfish Row. Clara and Jake sing their baby to sleep. Despite the devout Serena’s objections, the men start a game of craps. Porgy arrives, then Crown with Bess, and Crown tells Bess to pay Sportin’ Life for whiskey and happy dust. The game comes down to Robbins and Crown, but when Robbins wins and tries to collect his money, Crown accuses him of cheating and kills him. Crown leaves and Sportin’ Life offers to take Bess to New York with him, but Bess declines. Bess goes around the Row, knocking on doors, but no one will let her stay. She reaches Porgy’s door, and he leads her inside.
In Serena’s room, the community mourns for Robbins. A detective and policeman arrive and arrest Peter as a material witness until they catch Crown. They coldly tell Serena that she must bury her husband by the next day or his body will be donated to medical students. Serena breaks down. The undertaker arrives. Although Serena has only collected 15 dollars, he agrees to bury Robbins if she pays the remainder later. Bess joins the community by leading a spiritual.
Jake and the fishermen repair nets in spite of stormy weather. Porgy reflects on his happy new outlook. Maria rebuffs Sportin’ Life’s friendly overtures, and Porgy warns the community of an evil omen. As the inhabitants of the Row prepare for a picnic on a nearby island, Sportin’ Life again asks Bess to come to New York with him. She refuses, and Porgy, listening, frightens Sportin’ Life away. Porgy and Bess express their love for each other. The townsfolk emerge, dressed up and excited for the picnic.
On Kittiwah Island, the church picnic is underway. Sportin’ Life shares his doubts about scripture. The boat arrives to take everyone home, and as Bess hurries to catch it, Crown comes out of the bushes. Bess realizes he has been hiding here since Robbins’s death. He mocks her for loving Porgy and forces himself on her.
A week later, Jake and the fishermen head out to sea, despite predictions of bad weather. Bess, who returned from the island several days after the picnic, weak and delirious, lies ill in Porgy’s room. She wakes and tells Porgy that Crown has promised to return for her. Porgy says she is free to go, but Bess asks Porgy to shelter her from Crown. Clara, watching for Jake on the pier, hears the hurricane bell begin to ring.
The men and women gather in Serena’s room to weather the storm and pray. Crown bursts in, seeking shelter from the storm. When Clara, at the window, sees Jake’s boat upside-down, she gives her baby to Bess and dashes into the storm to help. Crown goes after her.
The women mourn Clara and Jake and those who have drowned in the storm. After dark, Crown comes back in search of Bess, fights with Porgy, and Porgy kills him.
Given Porgy's disability, no one believes he could be responsible. A detective comes to Catfish Row to investigate Crown’s death and asks Porgy to come down to the station and identify the body. Porgy refuses to identify the body, but the police drag him away. Sportin’ Life takes that opportunity to approach Bess and convince her that Porgy will stay in jail. He offers her happy dust and promises to take her to New York. She decides to go.
After a week, Porgy returns from jail. The community turns out to meet him, but looks uneasy when he asks for Bess. Finally, Maria informs him that Bess has gone to New York with Sportin’ Life. Porgy summons the strength to go and find her.