An orphan girl is adopted by a carnival. She falls in love with a married magician who rejects her; but an angry puppeteer and his partner give her a job and fall in love with her.
Lili Daurier (Leslie Caron) arrives in town, but she learns the baker she is looking for has died. Her father is dead, and a store proprietor (Alex Gerry) offers her a place to live and food if she will work. She is afraid and wants to leave. Marcus (Jean-Pierre Aumont) is there, and she follows him. They see carnival performers practicing. In his trailer he learns that she is sixteen. Marcus finds her a job as a waitress.
Marcus the Magnificent presents a magic show with Rosalie (Zsa Zsa Gabor) and makes her dress disappear. Lili is enchanted, and her boss pays her off. Marcus advises her to go back to the store job. At the carnival she climbs a ladder and hears a puppet talking to her. She walks over to the puppet theater. As the puppets talk to her, an audience gathers. Lili sings “Hi-Lili Hi-Lo.” Paul Berthalet (Mel Ferrer) and Jacquot (Kurt Kasznar) say they will take her on. Jacquot tells Lili that Paul was a great dancer until his leg was injured in the war. Jacquot gives her his room.
Lili imagines herself as a waitress performing with Marcus. Rosalie comes in, and then Lili is wearng a similar red dress. They dance. Lili comes back to reality and hears Jacquot talking with Paul in the kitchen. Paul sees her and says she is in love. Paul is frustrated he cannot dance.
Lili performs with the puppets, and Jacquot pays her. Paul reprimands her for buying candy and a doll. Puppets asks her what she wants. Paul says she wants the feeling that she is loved. The puppets say they care. Lili wears a new blue dress. Jacquot predicts that Paul will become jealous. Rosalie tells Jacquot that they are going to perform in the cabaret. The puppets talk to Lili about Marcus leaving. They sing “Hi-Lili Hi-Lo.”
Rosalie tells Marcus that she wants people to know that he is married to her. Marcus goes outside and talks with Lili in her trailer. She learns he is leaving in an hour. Paul comes in, and Marcus offers to sell his trailer to him. Paul tells Lili she is an understudy. Lili finds the wedding ring that Rosalie gave Marcus.
Theatre agents Tonit and Enrique ask Paul about Lili. Jacquot arrives, and they offer them the chance to perform. Jacquot says they will let them know. Jacquot tells Paul that Lili is leaving. Lili gives the ring to Marcus, says she knows he is married, and admits she was living in a dream. She says goodbye to him and to Rosalie. The puppet asks Lili if she is leaving without saying goodbye to him. The puppets asks her not to leave. Reynaldo gives her a fox fur. Paul tells her that they have an offer but cannot accept it without her. Lili asks him why he hides behind the puppets. Paul says he longs to be loved, but she has seen his angry side. Lili leaves.
Lili is walking on a country road with her suitcase. She imagines that the puppets are with her, and they dance happily. Then the puppet becomes Paul, and he disappears. Lili dances with Reynaldo, and he becomes Paul, who disappears again. Lili hugs the other puppet and finds it is Paul. He kisses her passionately. Back in reality, she turns around and runs back to Paul. The puppets applaud.
This artistic romance uses fantasy sequences to express the inner feelings of the characters. The girl eventually realizes that the man who is most angry toward her on the outside is the one who loves her most on the inside.