Young Manuela (Judy Garland) is pledged by her Aunt Inez (Gladys Cooper) to be married to the town mayor (Walter Slezak.) He's much older and "round as a pumpkin," but very rich, much to the delight of greedy Aunt Inez. In the meantime, Manuela dreams of being swept away by the infamous Macoco, "Mack the Black of the Caribbean Sea."
Meanwhile, Serafin (Gene Kelly) and his troupe of traveling actors arrive in town to perform. Serafin meets Manuela and makes a romantic play for her, but she'll have nothing to do with the lowly actor. Later that night during the performance, Serafin hypnotises Manuela. While under his mesmerizing spell she reveals her Macoco fantasy to him and the audience.
Serafin finds out that the mayor is actually Macoco, attempting to retire quietly with his lifetime's worth of plunder. Serafin tries to blackmail the mayor into giving up Manuela. Having no success with that, he announces to the villagers that he, Serafin, is Macoco. He threatens to burn down the town unless they give up Manuela to him in ten minutes' time. The townspeople plead with Manuela to sacrifice herself for the sake of the village. She grudgingly agrees to this "sacrifice," while actually being quite eager to run off with the man she thinks is Macoco. Then Manuela finds out that Serafin is just an actor, not really Macoco. A hilarious scene ensues in which she throws every vase in the room at him.
ThemMayor, eager to have the impostor executed as Macoco, thereby ensuring a permanent new identity for himself and a beautiful new wife, arranges with the Viceroy for a trial and execution. Just before the execution, Serafin pleads for one last performance for the Viceroy. During the performance, Manuela discovers that the Mayor is the real Macoco, and she helps Serafin bait him into revealing himself as the real pirate.
In the final scene, Manuela and Serafin perform "Be A Clown" in some new town, with the real Macoco presumably executed, and the two actors happily in love.