В серии снов и разговоров между различными персонажами выясняется, что мать и сестра Ивана (и, возможно, его отец-пограничник) были убиты. Мальчик одержим ненавистью и желанием отомстить за смерть своей семьи и других жертв немецких захватчиков. Вскоре он присоединяется к группе партизан и только в снах возвращается в беззаботное довоенное время.
В начале фильма Иван пересекает болото, после чего его перехватывают советские солдаты и ведут к молодому лейтенанту Гальцеву. Лейтенант не верит словам мальчика, что он с другого берега, поскольку там засел противник. Сам же Иван настаивает на том, чтобы лейтенант доложил о нём в штаб. Иван также встречает капитана Холина, давнего знакомого семьи. Подполковник Грязнов велит мальчику подготовить отчёт о патрулях немцев, а затем даёт указание отправить его в Суворовское училище. Иван отказывается ехать в тыл и хочет помочь военным. Тем не менее Грязнов приказывает отправляться в училище. Мальчик сбегает. По дороге он натыкается на сгоревшую деревню. В руинах одной из изб Иван встречает старика, чью жену расстреляли немцы. Грязнов находит Ивана и увозит его с собой, перед отъездом мальчик оставляет старику немного еды. Тем временем Холин знакомится с молодой медсестрой Машей, они влюбляются друг в друга, но, понимая, что во время войны не могут быть вместе, пытаются подавить свои чувства.