In 1943, Annemarie Johansen and her best friend Ellen Rosen are ten years old, growing up in Copenhagen, Denmark. Nazi Germany has occupied their country for the past three years. One day, Annemarie, Ellen, and Annemarie’s five-year-old sister Kirsti walk home from school. Annemarie and Ellen decide to race, but two German soldiers stop them on the corner near their apartment building. The Germans question Annemarie about why she is running, but Kirsti manages to defuse the moment with her comically rude behavior. When the girls arrive at home, Mrs. Johansen (Mama) and Mrs. Rosen are very upset to hear about their daughters' encounter with the Germans. They warn the girls against interacting with the soldiers.
Life has changed a great deal for the Johansens and the Rosens since the war started. German soldiers patrol every corner of Copenhagen, and all Danes are coping with severe food and electricity shortages. A few years ago, Annemarie’s older sister, Lise, was hit by a car and killed, only two weeks before her wedding. Her fiancé, Peter Neilsen, still visits the Johansens, although he is increasingly busy because of his role within the Danish Resistance. Despite the German occupation, most Danes are still steadfast in their loyalty to King Christian X and refuse to embrace the Nazi ideology.
A few weeks later, one of the buttons on Kirsti’s jacket breaks. Mama sends Annemarie, Ellen, and Kirsti to visit Mrs. Hirsch, who owns a button-and-thread store. When they arrive, they find out that the Germans have closed Mrs. Hirsch’s store because she is Jewish. Upon hearing this, Mama becomes very worried. That night, Mama brings Annemarie into the living room to talk with Mr. Johansen (Papa) and Peter. Peter explains that life will only get harder for the Jews in Denmark. Annemarie wonders what will happen to Mrs. Hirsch and the Rosens, but the adults assure her that their friends will take care of them.
Later that week, Annemarie, Ellen, and Kirsti play with paper dolls. Kirsti throws a temper tantrum when Mama buys her shoes made of fish scales, but Ellen solves the problem by dying the shoes with black ink. Ellen is very excited about the Jewish New Year and everything seems to be back to normal. However, on the day of the Jewish New Year, Mama announces that Mr. and Mrs. Rosen have had to leave Copenhagen and Ellen will be staying with the Johansens. Papa explains that the Germans are starting to arrest the country’s Jews. To stay safe, Ellen will pretend to be Annemarie’s sister.
That night, three Gestapo officers come to the Johansens' apartment to look for the Rosens. Mama and Papa pretend not to know anything, but the Gestapo insists on searching the house. While lying in bed, Annemarie rips off Ellen’s Star of David necklace and hides it. The officers are still suspicious because Ellen has dark hair, but Papa uses Lise’s baby pictures to prove that Ellen is really a member of their family (Like Ellen, Lise had dark hair as a child).
The next morning, Mama and Papa decide that the girls should skip school. Instead, Mama, Annemarie, Ellen, and Kirsti will visit Annemarie’s Uncle Henrik. Uncle Henrik lives in the northern fishing village of Gilleleje, which is just across the Sea from neutral Sweden. On the train ride to the village, a pair of German soldiers tries to trick Mama into saying she is Jewish by asking if she will be celebrating the New Year. Mama does not fall for the trick. However, Kirsti nearly exposes Ellen - but thankfully catches herself at the last moment.
The girls enjoy Gilleleje’s beautiful rural setting. They even find a stray kitten to play with. Annemarie promises Ellen that she has hidden her Star of David necklace in a safe place and will give it back to her when it is no longer dangerous to wear it. The next day, Uncle Henrik announces that his aunt, Great-Aunt Birte, has died. Annemarie is suspicious of this because she has never heard of a Great-Aunt Birte in the family. She confronts Uncle Henrik about it later, and he explains that Great-Aunt Birte’s death is a lie––but he cannot explain any more. He tells Annemarie that it will be easier for her to be brave if she does not fully understand what is happening.
That night, Henrik holds a funeral for Great-Aunt Birte in his living room, but leaves shortly after the guests arrive. Many strangers appear, along with Peter Neilsen and, eventually, Mr. and Mrs. Rosen. As expected, the German soldiers arrive at the house and demand to know why so many people have gathered there. Mama explains that they are holding a funeral. The Germans think it is odd that the casket is closed, because the Danish traditionally display their dead in open caskets. However, Mama replies that Great-Aunt Birte died of typhus, and the doctor warned the family that her corpse might still be contagious. After the soldiers leave, Peter reads a psalm out loud in case the Germans are still listening. When he is sure they are gone, he opens the casket. It is filled with blankets and coats for the strangers, who are actually Jewish refugees.
Mama and Peter escort the refugees in small groups to the harbor, where Uncle Henrik take them across the Baltic Sea to Sweden. Annemarie is very anxious and waits all night for Mama to get home. She eventually falls asleep, and when she wakes early in the morning, Mama still has not returned. She looks for her everywhere and eventually sees Mama crumpled in a heap at the entrance to a path through the woods. Annemarie rushes outside to help Mama, who explains that she tripped on a root on the way back from dropping off the Rosens and broke her ankle.
As Annemarie helps Mama back to the house, she notices a packet on the porch. Mr. Rosen was supposed to give the packet to Uncle Henrik, but he must have dropped it. Mama explains that the packet is essential to the rescue’s success, and Annemarie must bring it to Uncle Henrik before the boat departs. Annemarie hides the packet in a lunch basket and runs through the woods to avoid the German patrol. She tells herself the story of Red Riding Hood to keep herself calm.
Just as Annemarie is about to arrive at the harbor, some German soldiers and their dogs stop her. Annemarie tries to act like Kirsti so the Germans will think she is just a silly little girl. The soldiers inspect the lunch basket and find the packet, but when they open it, it contains nothing but a handkerchief. They let Annemarie go, and she is able to deliver the packet to Uncle Henrik. The rescue mission goes off successfully. Later that day, Uncle Henrik explains that the packet contained drugs to prevent the German dogs from smelling the refugees hidden in the boat. He adds that thanks to Annemarie, the Rosens and the other refugees were able to safely escape to Sweden in a secret compartment in the bottom of his boat.
Two years later, the war ends. Annemarie reveals that Peter Neilsen was caught by the Germans and executed publicly. Annemarie retrieves Ellen’s Star of David necklace from Lise’s wedding trunk. She decides to wear it herself until Ellen returns from Sweden.