Bruno and Gretel get a tutor, Herr Liszt (Jim Norton), who pushes an agenda of antisemitismand nationalist propaganda. Gretel becomes increasingly fanatical in her support for theThird Reich, covering her bedroom wall with Nazi propaganda posters, much to the confusion of Bruno. She flirts with SS-Obersturmführer Lieutenant Kurt Kotler (Rupert Friend), her father's subordinate, as her budding sexuality becomes fixated on the ideal of the German soldier. Bruno is confused about Nazi Propaganda, because the Jews Bruno has seen, in particular the family's Jewish servant Pavel (David Hayman), do not resemble the caricatures in Liszt's teachings.
Bruno one day disobeys his parents and sneaks off beyond the back garden. He eventually arrives at a barbed wire fence surrounding a camp, and befriends a boy his own age named Shmuel (Jack Scalon) who lives on the inside and who asks for food. In the ensueing conversation, the pair's lack of knowledge as to the true nature of the camp is revealed, with Bruno thinking that the striped uniforms that Shmuel, Pavel and the other prisoners all wear are "pajamas". Bruno starts meeting Shmuel regularly, sneaking him food and playing board games with him. Bruno eventually learns Shmuel is a Jew and that he was brought to the camp along with his father.
One day Elsa discovers the reality of Ralf's assignment after Kotler lets slip that the source of the black smoke coming from the camp's chimneys is due to the burning corpses of dead Jews. Elsa confronts and argues with Ralf and is disgusted and heartbroken. At dinner that night, after Bruno claims Herr Liszt won't let him read adventure books and that he mainly teaches him history, Kotler admits history was his favorite subject but that that didn't please his father, who as an academic persecuted by the Nazis, had moved to Switzerland. Ralf, upon hearing this, tells Kotler he should have informed the authorities of his father's past as it was his duty. The embarrassed Kotler then uses Pavel's spilling of a wine glass as an excuse to beat the inmate to death. The next morning the maid, Maria, is seen cleaning up the blood stains.
Later that day Bruno sees Pavel's replacement and notices Shmuel has been ordered to the house to clean glasses because of his nimble fingers. Bruno offers him some cake and they start talking. Kotler appears, sees Shmuel chewing and accuses him of stealing. Shmuel says Bruno offered him the cake, but because he is scared of Kotler, Bruno denies this, stating that he has never seen Shmuel before. Believing Bruno, Kotler orders Shmuel to finish cleaning the glasses and that they will then have a "little chat about what happens to rats who steal". Bruno goes to his room distraught and decides to apologize to Shmuel, but he has gone. Every day Bruno returns to the same spot by the camp but does not see Shmuel. Eventually Shmuel re-appears behind the fence with a black eye. Despite Bruno's betrayal, Shmuel forgives him and renews his friendship.
After the funeral of his grandmother, who was killed in Berlin by bombing, Ralf (after another argument with Elsa) decides Bruno and Gretel are to stay with a relative while he "finishes his work" at the camp, accepting that it is no place for the children to live in. Shmuel has problems of his own as his father has gone missing in the camp. Bruno decides to redeem himself by helping Shmuel find his father. The next day Bruno, who is due to leave, arrives back at the camp, and digs under the fence disguised as a Jew. Bruno soon discovers the true nature of the camp after seeing many sick and weak looking Jews. At one of the huts the boys are taken on a march with other inmates by Sonderkommandos.
At the house, Bruno's absence is noticed. After Gretel and Elsa discover the open window Bruno went through and the remains of a sandwich Bruno was taking for Shmuel, Elsa bursts into Ralf's meeting to alert him that Bruno is missing. Ralf and his men mount a search to find him. They enter the camp, searching for Bruno. In the mean time, Bruno, Shmuel and the other inmates are stopped inside a changing room and are told to take their clothes off for a "shower". They are packed into a gas chamber, where Bruno and Shmuel hold each other's hands. An SS soldier pours some Zyklon B pellets into the chamber, and the prisoners start yelling and banging on the metal door. Ralf, still with his men, arrives at an empty dormitory, signalling to him that a gassing is taking place. Ralf cries out his son's name, and Elsa and Gretel fall to their knees. The film ends by showing the closed door of the now-silent gas chamber, introducing a sad telling that Bruno has died.
- Vera Farmiga as Elsa (Mother)
- David Thewlis as Ralf (Father)
- Amber Beattie as Gretel
- Asa Butterfield as Bruno
- Rupert Friend as Kurt Kotler
- David Hayman as Pavel
- Jack Scanlon as Shmuel
- Sheila Hancock as Nathalie (Grandma)
- Richard Johnson as Matthias (Grandpa)
- Cara Horgan as Maria
- Jim Norton as Herr Liszt