César [Charles Boyer] is a barkeeper in Marseille in the early 1920s. His 18-year-old son Marius [Horst Buchholz] works for him at the bar, but is obsessed with going to sea and leaving his dull existence behind. The one thing that keeps him anchored is Fanny, an 18-year-old girl who sells fish with her mother Honorine [Georgette Anys] on the waterfront, and who has loved Marius her whole life. She flirts with him, but Marius always rejects her.
Fanny invites Marius to a Sunday-night dance, but he rejects her once more. Unbeknownst to Fanny, Marius is planning to leave the next day, secretly signed on as a sailor for a round-the-world scientific expedition, encouraged by his friend, the Admiral [Raymond Bussières]. Offended by his rejection, Fanny leaves.
Meanwhile Panisse [Maurice Chevalier], an older merchant and widower, asks to meet with Fanny's mother Honorine, who believes he wants to propose to her daughter. To Honorine's surprise, Panisse wants to marry Fanny, even though he knows she loves someone else. Although disappointed, Honorine does not object: Panisse is worth 600,000 francs.
Fanny tells Marius that she has rejected Panisse's proposal because she loves him and is willing to wait until he returns. Marius tells her he will be away for five years and to forget about him. They declare their love for each other and go to Fanny's house, where they sleep together.
The following morning, Honorine discovers Fanny and Marius in bed together. She and César begin to plan their children's wedding, but Fanny urges Marius to leave and follow his heart. She even lies to him, telling him that she would rather marry a rich man like Panisse than him. But, in truth, she is afraid that, eventually, he will grow to hate her for depriving him of this great opportunity.
About two months after Marius goes off to sea, Fanny discovers that she is pregnant with his child. She tells Panisse, who is happy to marry her anyway, overjoyed by the possibility of an heir to carry on his name. They marry, and Fanny gives birth to a boy. César, knowing the baby's true father, collaborates with Panisse to give the baby the name Césario Marius Panisse.
On Césario's first birthday, Panisse takes the train to Paris on business. While he is gone, Marius returns, on a short leave. He visits Fanny and, upon learning her child is his, apologizes to Fanny. He knows now that she said those things only to make him follow his passion for the sea. Marius tells her that he wants her back, but César comes in before anything can happen. Panisse arrives home early. Knowing that Fanny will not leave without the boy, he says that he will not try to stop Fanny from going with Marius, but he will not part with the child. Fanny tells Marius she loves him, but she will not take Cesario from Panisse. Marius leaves without Fanny or his child.
Ten years later, Cesario is looking forward to his birthday. After being taken to the waterfront, Cesario wanders off and meets the Admiral. The Admiral takes the boy sailing without telling anyone and reunites him with Marius, though Cesario has no idea who Marius is. Marius, who is now working in a garage, is overjoyed to see his son, but when Panisse is told the boy is missing, he is stricken and taken to his room. Fanny is shocked to find Cesario with his father. Panisse is dying, and Marius drives them home.
When they arrive at the house, Panisse calls for Cesario to sit with him. Fanny goes outside and talks with César and Marius. Marius expresses his bitterness and announces his plans to leave for the United States the next day. Fanny explains to Marius that she never told him about the baby because, on the day he left, she hoped he would turn around and not get on the boat. When he did not, she felt betrayed and angry. Panisse, on his deathbed, dictates a letter asking Marius to marry Fanny and be a father to Cesario. His only request is that the boy keep the last name, Panisse.