В зимний период 1918–1919 годов в одном городе, очевидно напоминающем Киев, находятся немецкие оккупационные войска, а у власти установлен гетман «всея Украины». Тем временем армия Петлюры приближается к городу, бои ведутся всего в двенадцати километрах от него. Жизнь в городе носит напряжённый и неестественный характер: сюда прибывают многочисленные выходцы из Москвы и Петербурга — банкиры, предприниматели, журналисты, адвокаты, поэты — привлечённые событиями от момента избрания гетмана весной 1918 года.

В столовой дома Турбиных за ужином собираются Алексей Турбин, врач, его младший брат Николка, унтер-офицер, их сестра Елена и близкие семьи — поручик Мышлаевский, подпоручик Степанов по прозвищу Карась и поручик Шервинский, адъютант в штабе князя Белорукова, командующего военными силами Украины. Обсуждается судьба города, который все они любят. Старший Турбин обвиняет гетмана и его политику украинизации в том, что тот не допустил своевременного создания русской армии. По его мнению, если бы её формирование произошло вовремя, то из юнкеров, студентов, гимназистов и офицеров, которых здесь большое количество, была бы создана сильная армия, способная не только защитить город, но и подавить силы Петлюры, а возможно, даже продвинуться к Москве, спасая таким образом Россию.

Сергей Иванович Тальберг, капитан генерального штаба и муж Елены, сообщает ей, что немцы покидают город, а он направляется в штабной поезд, отправляющийся ночью. Тальберг уверен, что через несколько месяцев вернётся с армией Деникина, формирующейся на Дону, однако пока вынужден оставить Елену в городе.

В ответ на наступление войск Петлюры в городе начинается формирование русских военных подразделений. Карась, Мышлаевский и Алексей Турбин приходят к командиру мортирного дивизиона полковнику Малышеву и поступают на службу: Карась и Мышлаевский как офицеры, Алексей — врачом дивизиона. Однако в ночь с 13 на 14 декабря гетман и генерал Белоруков покидают город на германском поезде, после чего Малышев распускает дивизион, поскольку законной власти больше нет, и защищать город некому.

К 10 декабря полковник Най-Турс завершает формирование второго отдела первой дружины. Полагая невозможным вести боевые действия без зимнего обмундирования, он, грозя оружием начальнику отдела снабжения, добивается выдачи валенок и папах для своих 150 юнкеров. Утром 14 декабря начинается атака Петлюры на город; Най-Турс получает приказ охранять Политехническое шоссе и при появлении противника вступить в бой. Вступив в столкновение с передовыми отрядами врага, он посылает трёх юнкеров разведать расположение гетманских частей. Разведчики возвращаются с известием, что частей нет, в тылу слышна пулемётная стрельба, а в город входят вражеские кавалерийские подразделения. Най-Турс осознаёт, что оказался в ловушке.

За час до этого Николай Турбин, ефрейтор третьего отдела первой пехотной дружины, получает приказ повести команду по маршруту. Прибыв на место, он с ужасом наблюдает бегущих юнкеров и слышит приказ полковника Най-Турса — срывать погоны, кокарды, бросать оружие, рвать документы и скрываться. Сам полковник прикрывает отход и вскоре смертельно раненый умирает на глазах Николки. Потрясённый, Николка, покинув Най-Турса, пробирается дворами и переулками домой.

Тем временем Алексей, не осведомлённый о роспуске дивизиона, приходит к двум часам к месту сбора, но находит пустое здание с покинутыми орудиями. Обратившись к полковнику Малышеву, он узнаёт, что город захвачен войсками Петлюры. Алексей, сорвав погоны, пытается вернуться домой, но встречает петлюровских солдат, которые, узнав в нём офицера (он забыл снять кокарду с папахи), начинают преследовать его. Раненого в руку Алексея укрывает в своём доме незнакомая женщина по имени Юлия Рейсе. На следующий день, переодев его в гражданскую одежду, Юлия доставляет Алексея домой на извозчике. Одновременно с ним в дом Турбиных приезжает двоюродный брат Тальберга Ларион, недавно переживший развод. Ларион нравится семье Турбиных, и все находят его приятным.

Василий Иванович Лисович, по прозвищу Василиса, хозяин дома, в котором живут Турбины, занимает первый этаж, тогда как семья живёт на втором. Накануне вступления Петлюры в город Василиса устраивает тайник для хранения денег и драгоценностей. Однако через щель в занавешенном окне за его действиями наблюдает неизвестный человек. На следующий день трое вооружённых людей с ордером на обыск приходят к Василисе, вскрывают тайник, забирают часы, костюм и ботинки. После их ухода Василиса с женой подозревают, что это были бандиты. Василиса обращается к Турбиным за помощью, и для защиты к ним направляется Карась. Обычно скупая Ванда Михайловна, жена Василисы, не жалеет средств на угощение: на столе оказываются коньяк, телятина и маринованные грибы. Карась, слушая жалобы Василисы, засыпает довольным.

Через три дня Николка, узнав адрес семьи Най-Турса, посещает родственников полковника и сообщает матери и сестре подробности его гибели. Вместе с Ириной Най-Турс, сестрой полковника, он находит тело в морге, и в ту же ночь в часовне при анатомическом театре происходит отпевание.

Спустя несколько дней у Алексея развивается воспаление раны и начинается сыпной тиф, сопровождающийся высокой температурой и бредом. По заключению врачебного консилиума состояние оценивается как безнадёжное; 22 декабря начинается агония. Елена запирается в спальне и fervently молится Пресвятой Богородице, умоляя спасти брата. К удивлению дежурившего врача, Алексей приходит в сознание — кризис проходит.

Через полтора месяца полностью выздоровевший Алексей посещает Юлию Рейсе, которая спасла ему жизнь, и дарит ей браслет своей покойной матери. Просит разрешения навещать её. Покидая Юлию, он встречает Николку, возвращающегося от Ирины Най-Турс.

Елена получает письмо от подруги из Варшавы, в котором сообщается о предстоящей женитьбе Тальберга на их общей знакомой. Елена, плача, вспоминает свою молитву.

В ночь с 2 на 3 февраля начинается отход петлюровских войск из города. Вдали слышен грохот орудий большевиков, приблизившихся к городу.