В конце мая 1812 г. в Петербурге, на Невском бульваре повстречались два друга — Владимир Рославлев и Александр Зарецкий. Рославлев хандрит, и жизнерадостного Зарецкого беспокоит состояние его приятеля. Рославлев влюблён в Полину Лидину. Но не любовь причина меланхолии: по требованию будущей тёши он вышел в отставку, а между тем, по его словам, «буря сбирается над нашим отечеством», война с Наполеоном неизбежна, и, как русского патриота, Рославлева это чрезвычайно тревожит. Возмущает его и рабское преклонение русского общества перед всем французским и, как следствие, небрежение русскими обычаями, языком, историей. Единственная мысль, которая согревает его душу и делает счастливым, — скорое свидание с невестой.
Рославлев едет в подмосковную деревню Утешино к Лидиным. Он полон нетерпения — ведь уже назначен день свадьбы. Но ожидание «небесного блаженства» не делает его глухим к чужим страданиям. Так, на одной из почтовых станций он берет к себе в попутчики московского купца Ивана Архиповича Сезёмова, который спешит домой к умирающей жене.
Подъезжая к деревне, Рославлев встречает охотников, среди них дядя Полины Николай Степанович Ижорский. Он сообщает, что Лидины поехали в город с визитом и часа через полтора должны вернуться.
Возвращение Лидиных омрачено эпизодом, едва не завершившимся трагически: когда их экипаж переезжал речку по узкому мосту, дверцы ландо распахнулись, и из него в воду упала Оленька, младшая сестра Полины. Если бы не Рославлев, бросившийся прямо на коне в воду вослед утопающей, то Оленька непременно бы погибла.
Несчастный случай с сестрой и её последующая болезнь дали Полине повод просить Рославлева отложить свадьбу. Владимир в отчаянии, но он боготворит свою невесту и потому не может не уступить её просьбе.
Оленька не узнает свою сестру, которая «с некоторого времени стала так странна, так причудлива», а тут ещё её решение отложить свадьбу. Полина больше не в состоянии скрывать свою тайну. «Трепеща как преступница», она признается Оленьке, что любит другого, и если он, как неумолимая судьба, встанет между ней и её мужем, то ей останется только умереть.
В доме Ижорского царит оживление. На обед съехались многочисленные гости. Среди приглашённых Лидина с дочерьми и Рославлев. Главная тема разговора — скорая война с Наполеоном. Рославлев уверен, что, если Наполеон решится идти в Россию, война неизбежно сделается народною, и тогда «каждый русский обязан будет защищать своё отечество».
Но война, оказывается, уже идёт. Об этом Рославлев узнает из письма Зарецкого, переданного ему приехавшим к Ижорскому исправником: 12 июня французские войска перешли Неман, и гусарский ротмистр Зарецкий, чей полк стоял недалеко от Белостока, уже участвовал в схватке с французами. В этом бою, сообщает далее Александр своему другу, ему удалось пленить французского полковника графа Сеникура, а точнее — спасти его от смерти, так как, тяжело раненный, Сеникур не сдавался, а «дрался как отчаянный». Для Рославлева все решено — на днях он отправляется в армию.
Прошло два месяца. После очередного боя русский арьергард расположился в двух верстах от Дрогобужа. Среди отдыхающих воинов Рославлев и Зарецкий. Вспоминая о том, какое тяжёлое впечатление письмо Зарецкого произвело на Полину, Владимир рассказывает, что по пути следования в действующую армию ему повстречались пленные французы, среди которых был раненный в голову Адольф Сеникур. Тяжёлое состояние французского полковника позволило Рославлеву уговорить конвойного офицера отправить Сеникура на излечение в деревню к Лидиным, как выяснилось, хорошо знакомым раненому офицеру, года два тому назад он познакомился с Лидиной в Париже и часто ездил к ней с визитами.
Через два дня в очередном бою с французами Рославлев ранен в руку. Получив отпуск на лечение, он выезжает в Утешино проведать Полину. Рана задерживает Рославлева в пути, и только через две недели он смог покинуть Серпухов.
Дорога на Утешино оказалась размытой дождями. Пришлось ехать в объезд, через кладбище. Начинается гроза. Коляска Рославлева окончательно вязнет в грязи. С кладбищенской церкви доносится пение, и заинтригованный Владимир идёт туда, рассчитывая на чью-либо помощь. Заглянув в окно, он видит венчальный обряд и, к своему ужасу, в женихе и невесте признает Сеникура и Полину. От величайшего потрясения рана Рославлева открывается, и он, обливаясь кровью, прямо на пороге церкви лишается чувств.
Очнулся Рославлев на следующее утро в доме Ижорского. Его единственное желание — уехать подальше от этих мест, туда, где он может «утонуть в крови злодеев-французов». Узнав, что французы недалеко от Москвы, Владимир решает ехать в Москву, ведь «там, на развалинах её решится судьба России».
В Москву слуга привозит Рославлева обеспамятевшего, в горячке. Купец Сезёмов прячет его у себя дома, выдав за своего сына, — со дня на день французы войдут в Москву, и тогда русскому офицеру непоздоровится.
В начале сентября вместе с отступающими войсками в Москву приезжает Зарецкий. Он решает сначала навестить своего приятеля в деревне, а потом догонять свой полк. Но на пути в Утешино среди ополченцев Александр встречает Ижорского, от которого узнает о трагической истории замужества Полины. А тут ещё слуга Ижорского сообщает, что встречал слугу Рославлева в Москве — Владимир Сергеевич в горячке и находится в доме купца Сезёмова. Зарецкий и Ижорский потрясены — только что пришло известие, подожжённая жителями Москва сдана без боя, французы в Кремле. «Несчастная Москва!», «Бедный Рославлев!» — восклицают они почти одновременно.
В поисках своего полка Зарецкий попадает в партизанский отряд, которым командует знакомый ему артиллерийский офицер. До конца сентября он кочует с летучим отрядом партизан, участвуя в набегах на французские обозы. Москва окружена, в городе не осталось никакого продовольствия, и, несмотря на все военные предосторожности французов, целые партии фуражистов пропадают без вести. Война с, Наполеоном принимает всенародный характер.
Зарецкого беспокоит судьба друга. Переодевшись в мундир убитого французского офицера, он отправляется в Москву на поиски Рославлева. Случайная встреча с капитаном жандармов Рено грозит ему разоблачением: француз опознал лошадь и саблю Зарецкого, которые принадлежали жениху сестры Рено. От неминуемого ареста Зарецкого спасает полковник Сеникур — возвращая долг чести, он подтверждает, что тот действительно французский капитан Данвиль.
Оставшись наедине с полковником, Александр раскрывает ему причину своего «маскарада»: он приехал за своим другом, который, будучи раненым, не смог выехать из Москвы, когда в неё входили французские войска. Узнав, что этот раненый офицер Рославлев, Сеникур считает своим долгом помочь Зарецкому. Вспоминая «ужасную ночь» венчания, он чувствует себя виноватым перед Рославлевым. «Я отнял у него более, чем жизнь», — восклицает Сеникур. «Ступайте к нему; я готов для него сделать все — продолжает француз, — быть может, он не в силах идти пешком У самой заставы будет вас дожидаться мой человек с лошадью, скажите ему, что вы капитан Данвиль: он отдаст вам её...»
Зарецкому удаётся вывезти Рославлева из Москвы. Их путь лежит в родной полк, и, несмотря на всякого рода дорожные приключения — сначала встречу с крестьянами, принявшими их за французов, а потом военную стычку с французскими фуражистами, в которой Рославлев взял на себя командование крестьянским отрядом, — приятели в конце концов выходят на биваки своего полка.
10 октября французы оставили Москву, «погостив в ней месяц и восемь дней». Сделав несколько неудачных попыток прорваться в богатейшие провинции России, Наполеон был вынужден отступить по той же дороге, по которой шёл к Москве, оставляя за собой тысячи умирающих от холода и голода солдат. На переправе через Березину был разбит корпус Нея, последняя надежда французской армии, а после сражения под Борисовом отступление французов превратилось в настоящее бегство. Друзья прощаются на границе: генерал, при котором Рославлев был адъютантом, присоединился со своей дивизией к войскам, осаждавшим Данциг, а полк Зарецкого по-прежнему остался в авангарде армии.
Осада Данцига, где расположен французский гарнизон под командованием генерала Раппа, затянулась. Уже ноябрь 1813 г., в осаждённом городе голод. Аванпосты русских постоянно тревожат партизанские вылазки французского гарнизона Среди них особо отличается «адская рота» гусарского офицера Шамбюра, которая, что ни ночь, совершает набеги за провиантом в деревни, где стоят русские посты. В одну из таких вылазок Шамбюром захвачен в плен Рославлев. Так он попадает в Данциг.
Проходят две недели. Под предлогом пресечения «невыгодных слухов» о французской армии, которые якобы распространяет по городу пленный офицер, Рославлева сажают в тюрьму. На самом деле это хитрость, придуманная начальником штаба генералом Дерику-ром. В тюрьме сидит некий флорентийский купец, его подозревают, что он русский шпион. Рославлева сажают вместе с купцом, дабы подслушать их разговоры, ведь так естественно будет их желание поговорить на своём родном языке.
Купец действительно оказывается русским офицером. Более того, они знакомы: незадолго до войны Рославлев стал невольным свидетелем дуэли между этим офицером и французом, позволившим себе крайне оскорбительные замечания по поводу России и русского народа.
Подозревая, что их подслушивают, «купец» запиской предупреждает Рославлева об этом и в ней же просит Владимира, как только его выпустят из тюрьмы, найти женщину, проживающую на Театральной площади на пятом этаже красного дома в шестой комнате. Она отчаянно больна, и, если Рославлев застанет её в живых, надо ей передать, чтобы она сожгла бумаги, которые ей передал на сохранение купец Дольчини.
Рославлева действительно скоро выпускают (за него поручился Шамбюр), и на следующий день он отправляется на Театральную площадь. Пятый этаж красного дома оказался убогим чердаком, комната поражает своей нищетой. В умирающей женщине Рославлев с ужасом узнает Полину. Он давно уже простил её. Более того, узнав, что она, пожертвовав всем, отправилась вслед за мужем делить все его невзгоды и страдания, он стал испытывать к ней величайшее уважение.