Початок квітня 1945 року. Оповідач, хлопчик на ім'я Коля, живе в невеликому тиловому місті разом з мамою і бабусею. Батько Коли на фронті. Мама працює медсестрою в госпіталі, а сам хлопчик вчиться в третьому класі.
Мама і бабуся намагаються вберегти Колю від голоду та інших негараздів війни. Війна добігає кінця, але їжі не вистачає, і хлопчик постійно голодний. Молодшим класам школи видають талони на доппітаніе. Талонів на всіх не вистачає, і діти ходять в їдальню по черзі. Коліна чергу підходить в перший день після канікул.
Восьма їдальня, в яку Колі належить ходити, представляється хлопчикові райськими кущами з люстрами і фікусами. Насправді їдальня виявляється величезним і холодним залом, повним дітей з усіх шкіл міста. Коля сідає за стіл поруч з двома «гладкими пацанами» які їдять граючи, наввипередки. Залишки хліба вони віддають всюдисущим виробами, щоб не залишати їх шакалів.
Хто такі шакали, Коля дізнається на наступний день. Щоб не зустрічатися з «гладкими», він приходить в їдальню пізніше і вже закінчує обід, коли перед ним з'являється незнайомий хлопець з жовтим обличчям і просить у Колі залишки ненависного вівсяного супу. Сторопівши, він віддає суп, а якась дівчинка постарше ділиться своєю порцією з молодшою сестрою хлопчаки. Коля розуміє, що це і є шакали - голодуючі діти, які жебракують в шкільних столовках.
На наступний день Коля приходить до восьмої їдальню рано через скасованої фізкультури. У нього в портфелі лежить шматок хліба, який хлопчик стягнув з буфета напередодні ввечері. У довжелезну чергу, прямо перед Колею, вклинюється компанія нахабних і рослих пацанів на чолі з носатим хлопцем. Від зграї несе тютюном і «якийсь грубої і злою силою, з якою навіть дорослі вважали за краще не зв'язуватися».
Я не заздрив таким зграй, їх тоді було багато, мало не в кожному дворі або навіть класі - там панували неправедні закони, зло і несправедливість.
Коля починає виглядати жовтолицих хлопчика, але бачить інших шакалів, більш нахабних - вони крадуть їжу з підносів. Сусідка по столу розповідає Колі, що такі шакали можуть відняти не тільки хліб, а й тарілку з супом або котлетою. У цей момент Коля бачить жовтолицих. На цей раз він теж бере хліб без дозволу. Обікрадена дівчисько починає ревіти, піднімається гвалт, і жовтолиций встигає вискочити на вулицю.
Коля чує, як зграя носатого домовляється провчити шакала. Він вискакує слідом за пацанами, які вже напали на жовтолицих. Той приймає удари «з якихось незрозумілих <...> смиренням», а потім вистачає носатого ватажка за горло. Зграя не може вирвати ватажка з його мертвої хватки, жовтолиций сам відпускає напівзадушеного пацана, і зграя боягузливо тікати.
Витративши в бійці останні сили, жовтолиций хлопчик втрачає свідомість. Коля мчить по допомогу до гардеробниці, і та відпоювали жовтолицих солодким чаєм. Він зізнається жінці, що не їв п'ять днів.
Коля знайомиться з Вадька, який старше хлопчика на три класи, і його молодшою сестричкою Марією. Він дізнається, що діти були евакуйовані з Мінська в тил недавно. Їхній батько загинув на початку війни, а мати одразу після приїзду захворіла на тиф і потрапила в тифозний барак. Гроші і талони на продукти Марія втратила, і тепер діти виживають, як можуть. Щоб не засмучувати хвору матір, діти щодня пишуть їй бадьорі і оптимістичні листи, в яких немає ні слова правди.
Колю непереборно, як магнітом, тягне до Вадька. Він відчуває, що його новий друг відрізняється від всіх інших людей, навіть від дорослих.
Свобода, дарована для битви з голодом, самостійність, отримана для того, щоб не померти, виглядали інакше.
Вадим просить Колю позичити йому до літа якусь куртку. Своє пальто, тепле і добротне, він хоче продати, щоб якось прогодуватися до початку місяця і нових продуктових карток.
Коліна мама застає хлопців у дворі, коли Вадим приміряє куртку, занадто тонку для ранньої весни. Коля розповідає їй про нещастя Вадика і Марії. Жінка призводить їх додому, ситно годує і вкладає спати. Оглянувши зошити дітей, Коліна мама дізнається їх прізвище - Русакова - і вирішує їм допомогти. На наступний день вона дзвонить в школи, де вчаться брат з сестрою, і повідомляє про їх тяжке становище. Коля про це не знає - він просив все зберігати в таємниці, щоб не засмутити маму Русакова.
На наступний день Коля прогулює школу. Весь ранок він разом з Вадимом ходить по місту в пошуках їжі - не по роках дорослий хлопчик не хоче сидіти на шиї у чужих людей.
Це буває часто, в усі часи <...> хлопчисько трохи молодші, точно вірний зброєносець, готовий слідувати за хлопчиськом, який ледь старша за нього.
Виявляється, Вадик знає все «хлібні» місця міста. Коля розуміє, що шакалить він не перший тиждень. По дорозі Вадим розповідає про шпани, яка забирає в їдальнях їжу, погрожуючи ножем. Потім хлопці заходять в кімнату під сходами триповерхової комуналки, яку виділили евакуйованим Русакова. Такий убогій кімнати Коля не бачив ніколи. Постільна білизна спалили через тиф, а вікна так і залишилися заклеєними папером хрест-навхрест. Після загибелі чоловіка Вадькіна мама живе як уві сні, тому Вадим так за неї боїться.
В той день Коля вирішує розділити з Вадиком свій обід в восьмий їдальні. Біля їдальні їх наздоганяє Марія і повідомляє, що школа виділила для них талони на спецхарчування, директор пообіцяв нові продуктові картки, а вчителі зібрали трохи грошей.
В їдальні Марія отримує обід першої, але незабаром втрачає другий страви - котлет. Їх забирає «хлопець з обличчям, схожим на гарбуз». Озброївшись підносом, Вадим заступається за сестру, незважаючи на гостру бритву в руці шакала. Злодій тікає, залишивши недоїдену котлету. Хлопці не дивляться на неї, хоча ще вчора доїли б не роздумуючи.
Виходить, - подумав я, - коли голод відступає, людина відразу стає іншим? Але хто і ким тоді править? Голод людиною? Людина голодом?
«Гарбузовий хлопець» підстерігає Вадима біля входу в їдальню і лезом псує його пальто. Вадим засмучений - тепер він не зможе його продати.
Хлопці розлучаються - Вадим відправляється в школу, а Коля і Марія складають лист і відносять його в страшний тифозний барак. По дорозі Марія розповідає, як вони з братом виживали після втрати карток, і як соромно спочатку випрошувати їжу в їдальні. Тільки потім «голод вбиває всякий сором».
Увечері Колю очікують три події. Спочатку Вадик приходить зі школи приголомшений - вчителі зібрали для брата і сестри цілий портфель продуктів. Коліна мама запевняє, що вона тут ні при чому. Друга подія - розповідь Марії про те, як вона з братом ходила в баню. Вадик не відпустив сестричку одну, дівчинка могла обшпаритися, і Марії довелося митися в чоловічому відділенні. З тих пір Марії соромно ходити в лазню.
Третьою подією виявляється наганяй, який влаштовує Колі мама, яка дізналася, що син прогуляв школу. Коля намагається пояснити, що допомагав Вадиму шукати їжу, але мама нічого не хоче слухати. Вона вирішує, що Вадим погано впливає на її сина. Коля обурюється, в його відношенні до мами, завжди такої сильної і мудрої, «ламається якась тонка перегородочка».
Тендітна, ламка це річ - душа дитяча. Ох, як берегти треба б її, ох, як треба! ..
Після цього наганяючи Коля «здригнувся духом», дружби у нього з Вадиком не виходить - виходить лише знайомство.
Протягом всієї весни Коліна мама передає Вадиму, що хвора з тифозного барака відчуває себе непогано. Восьмого травня вона приходить з роботи засмучена і в сльозах.Коля лякається - раптом зараз, напередодні перемоги, щось трапилося з татом. Зібравши невеликий гостинець, мама разом з Колею відправляється до Русакова і там поводиться метушливо і неспокійно.
На наступний день, 9 травня, все місто святкує День Перемоги. Директриса школи вітає дітей, а вчителька просить запам'ятати все пережите, адже вони, діти війни, стануть останніми, хто збереже ці спогади. Вони повинні зберегти «наше горе, нашу радість, наші сльози» і передати цю пам'ять своїм дітям і онукам.
Поштовхавшись після уроків у святковій юрбі, Коля відправляється до Вадиму і дізнається, що його мама померла кілька днів тому. Коліна мама дізналася про це тільки вчора, тому й поводилася так дивно. Слухаючи Вадима, Коля відчуває, як між ними «розкривається чорна вода», немов вони з Марією спливають кудись, а він, Коля, залишається на березі. Вадим повідомляє, що їх з Марією відправлять в дитячий будинок, і просить Колю піти.
Марія все лежала, все спала якимось несправжнім, казковим сном, тільки ось казка була недобра, нема про сплячу царівну. Без будь-яких надій була ця казка.
Ще один раз, останній, Коля зустрічається з Вадимом в кінці літа. «Враз підріс, неусмішливий хлопець» повідомляє, що їх дитячий будинок їде.
Восени Коля переходить в наступний клас, і йому знову виділяють талони на доппітаніе. У восьмий їдальні до нього знову підходить голодний хлопчик, і Коля ділиться з ним своєю порцією.