It is close to sunset in Paris, and the stevedores work unloading Michele's barge. Giorgetta, Michele's wife, asks her husband if she can bring wine to the workers. He agrees but does not join them because she refuses his kiss. The stevedores start dancing to the music of a nearby organ grinder and one of them steps on Giorgetta's foot. Luigi, a stevedore, dances with her, and it is evident that there is something between them. Upon hearing of Michele's return the stevedores' gathering breaks up.
Work is getting scarce and Giorgetta and Michele discuss which of the stevedores should be dismissed; she prefers that it be anyone other than Luigi despite him being Michele's first choice. Soon the conversation turns into a fight. La Frugola enters, looking for Talpa, her husband and one of the stevedores. She shows everyone the fruits of her scavenging in Paris and scolds the men for their drinking. Luigi laments his lot in life, and La Frugola sings of her wish to one day buy a house in the country where she and her husband can retire. Giorgetta and Luigi sing a duet about the town where they were both born.
The stevedores depart except for Luigi, who asks Michele to dismiss him and let him off in Rouen, but Michele convinces him against this, saying there is not enough work in Rouen. When they are alone, Giorgetta asks Luigi why he requested to be dismissed; the pair acknowledge their love. They plan to meet later that evening upon the signal of a match being lit on board. By now Luigi seems determined to kill Michele and flee with Giorgetta.
Michele later reminisces with Giorgetta of the days before their child died and how he could cover the two of them under his cloak. He is distressed about being twice her age; she comforts him but she still will not kiss him, and goes off.
Michele wonders aloud if Giorgetta is still faithful to him and ponders who might have changed her so much. He reviews the list of men who have shared in their lives but dismisses each of them as improbable. Michele lights his pipe and Luigi, seeing it from afar, thinks that it is Giorgetta's signal. He returns to the barge and is confronted by Michele. In the ensuing fight, Michele disarms Luigi and forces him to confess his affair with Giorgetta before strangling him to death and hiding Luigi's body under his cloak. Giorgetta returns to the barge, approaching him remorsefully after their fight earlier, and when she is close enough Michele opens his cloak to reveal her dead lover, Luigi's lifeless body falling on Giorgetta.
Arias
"È ben altro il mio sogno!"—- Giorgetta
"Hai ben ragione! meglio non pensare" — Luigi
"Nulla! Silenzio!" — Michele
"Scorri, fiume eterno" — Michele. This more contemplative aria for Michele was later replaced by Puccini with the vengeful "Nulla! Silenzio!" The Leinsdorf and Gardelli recordings both include it as an addendum.