Konec maja 1812 v Sankt Peterburgu na Nevskem bulvarju sta se srečala dva prijatelja - Vladimir Roslavlev in Aleksander Zaretsky. Roslavlev se posmehuje, veseli Zaretski pa skrbi za stanje svojega prijatelja. Roslavlev je zaljubljena v Polino Lidina. Toda ljubezen ni vzrok za melanholijo: na prošnjo bodoče tašče je odstopil, medtem pa je po njegovem mnenju "nad našo državo pohajala nevihta <...> vojna z Napoleonom je neizogibna in Roslavlev je kot ruski domoljub izjemno zaskrbljujoč. Ogorčen je tudi nad suženjskim čaščenjem ruske družbe pred vsemi Francozi in posledično zapostavljanjem ruskih običajev, jezika in zgodovine. Edina misel, ki mu greje dušo in ga osrečuje, je hiter zmenek z nevesto.
Roslavlev odide v vasico Uteshino blizu Moskve k Lidincem. Poln je nestrpnosti - navsezadnje je že bil določen poročni dan. Toda pričakovanje "nebeškega blaženosti" ga ne naredi gluhega za trpljenje drugih. Tako na eni od poštnih postaj odpelje do svojih sopotnikov moskovskega trgovca Ivana Arhipoviča Sezemova, ki se odpravi domov k umirajoči ženi.
Ko se bliža vasi, Roslavlev sreča lovce, med njimi Polinin stric Nikolaj Stepanovič Izhorskiy. Poroča, da se je Lidina odpravila v mesto na obisk in bi se morala vrniti čez uro in pol.
Vrnitev Lidinov je zasenčila epizoda, ki se je skoraj končala v tragediji: ko je njihova posadka prečkala reko po ozkem mostu, so se vrata landau odprla in Olenka, Polinina mlajša sestra, je padla v vodo. Če ne bi bil Roslavlev, ki je po utopitvi že brcal prav na konju v vodo, potem bi Olenka zagotovo umrla.
Nesreča s sestro in njena poznejša bolezen sta Polini dala razlog, da je prosil Roslavljeva, naj odloži poroko. Vladimir je obupan, a časti svojo nevesto in zato ne more, vendar ne ugoditi njeni prošnji.
Olenka ne bo prepoznala sestre, ki je "že nekaj časa postala tako čudna, tako bizarna", in tu je njena odločitev, da odloži poroko. Polina ni več sposobna skriti svoje skrivnosti. "Drhti kot zločinec," ona prizna Olenki, da ljubi drugega, in če bo on kot nepopisna usoda stal med njo in možem, bo morala le umreti.
V hiši Izhora kraljuje preporod. Za kosilo so se zbrali številni gostje. Med povabljenimi Lidin s hčerkama in Roslavlev. Glavna tema pogovora je rešilca z Napoleonom. Roslavlev je prepričan, da če se bo Napoleon odločil, da bo šel v Rusijo, bo vojna neizogibno postala vojna ljudi in potem bo "vsak Rus moral braniti svojo domovino."
A vojna, kaže, že poteka. Roslavlev izve za to iz pisma Zaretskega, ki mu ga je poslal policist, ki je prispel na Izhoro: 12. junija so francoske čete prečkale Neman, in kapitan Hussar Zaretsky, katerega polk je bil nameščen blizu Bialystoka, je že sodeloval v bitki s Francozi. V tej bitki Aleksander še naprej obvesti svojega prijatelja, uspel je ujeti francoskega polkovnika grofa Senikurja, ali raje ga rešiti pred smrtjo, saj senik, hudo ranjen, ni obupal, ampak se je "boril, kot je bil obupan." Za Roslavleva je vse odločeno - drugi dan odide v vojsko.
Dva meseca sta že minila. Po drugi bitki je bil ruski stražar nameščen dve milji od Drogobuža. Med počivajočimi bojevniki so Roslavlev in Zaretsky. Ko spominja na grob vtis, ki ga je Zareckov napisal na Polini, Vladimir pravi, da je na poti v vojsko srečal francoske ujetnike, med katerimi je bil Adolf Senikur ranjen v glavo. Hudo stanje francoskega polkovnika je omogočilo Roslavlevu, da je prepričal častnika za spremstvo, naj pošlje Senikurja na zdravljenje v vasi Lidins, saj se je izkazalo, da je bil z ranjenim častnikom dobro seznanjen, pred dvema letoma je v Parizu spoznal Lidino in jo pogosto odhajal na obisk.
Dva dni pozneje je bil v naslednji bitki s Francozi Roslavlev ranjen v roko. Ko je dobil zdravljenje, odide v Uteshino, da obišče Polino. Rana je Roslavleva odlašala v tranzitu in le dva tedna pozneje je uspel zapustiti Serpuhov.
Pot do Uteshina je izpralo deževje. Moral sem iti naokoli, skozi pokopališče. Začne se nevihta. Roslavljeva sprehajalka se končno zatakne v blatu. Petje se sliši iz pokopališke cerkve in zaintrigirani Vladimir gre tja, računajoč na pomoč nekoga drugega. Če pogleda skozi okno, zagleda poročni obred in na njegovo grozo prepozna Senikurja in Polino v nevesti in ženinu. Od največjega šoka se rana Roslavljeve odpre in on, namočen v krvi, tik na pragu cerkve, izgubi čut.
Roslavlev se je naslednje jutro zbudil v Izhorovi hiši. Njegova edina želja je, da odide iz teh krajev, kamor se lahko "utopi v krvi francoskih zlikovcev". Ker je izvedel, da Francozi niso daleč od Moskve, se Vladimir odloči, da bo šel v Moskvo, saj bo "tam na ruševinah odločala usoda Rusije".
V Moskvi hlapec pripelje Roslavljeva, ki je osupljiv, v vročini. Trgovec Sezemov ga skriva doma, izdaja ga kot svojega sina - iz dneva v dan bodo Francozi vstopili v Moskvo, potem pa ruski častnik ne bo bolan.
V začetku septembra Zaretski prispe v Moskvo z umikajočimi se četami. Odloči se, da bo najprej obiskal prijatelja v vasi, nato pa dohitel svoj polk. Toda na poti v Uteshino med milicami Aleksander sreča Izhorskega, s katerim izve za tragično zgodovino Poline poroke. In potem Izhorski hlapec poroča, da je v Moskvi spoznal Roslavlevega služabnika - Vladimir Sergejevič je v vročini in je v hiši trgovca Sezemova. Zaretsky in Izhorsky sta šokirana - novica je pravkar prišla, ki so jo požgali moskovski prebivalci in se brez boja predali Francozi v Kremlju. "Nesrečna Moskva!", "Ubogi Roslavlev!" Vzkličejo skoraj istočasno.
V iskanju svojega polka Zaretski pade v partizanski odred, ki mu je poveljeval znani topniški častnik. Do konca septembra se sprehaja z letečim odredom partizanov, ki sodeluje v napadih na francoske konvoje. Moskva je obdana, v mestu ne ostane hrane, in kljub vsem vojaškim vojaškim previdnostim manjkajo cele serije krmil. Vojna z Napoleonom ima ljudski značaj.
Zareckega skrbi usoda prijatelja. Oblečen v uniformo umorjenega francoskega častnika se odpravi v Moskvo v iskanju Roslavleva. Naključno srečanje z žandarjem stotnikom Renojem mu grozi z razkritjem: Francoz je identificiral konja in sabljo Zaretskega, ki sta pripadala ženinu ženinu Renove sestre. Od skorajšnje aretacije Zaretskega polkovnik Senicour reši - vrni dolg časti, potrdi, da je v resnici francoski kapetan Danville.
Aleksander, ki je ostal sam s polkovnikom, mu razkrije razlog za njegovo "maskarado": prišel je po svojega prijatelja, ki, ranjen, ni mogel zapustiti Moskve, ko so vanj vstopile francoske čete. Ko izve, da je ta ranjeni častnik Roslavlev, Senikur meni, da je njegova dolžnost pomagati Zaretskemu. Ob spominu na "grozno noč" poroke se počuti krivega pred Roslavljevim. "Vzel sem mu več kot življenje," vzklikne Senikur. »Pojdi k njemu; Pripravljen sem storiti vse zanj <...> - nadaljuje Francoz, - <...> morda ne more hoditi <...> Na samem odhodu vas bo počakal moj mož s konjem in mu rekel, da ste kapitan Danville: dal bo ti njen ... "
Zaretskem uspe odstraniti Roslavljeva iz Moskve. Njihova pot leži v njihovem rodnem polku in kljub vsem vrstam cestnih dogodivščin - najprej srečanje s kmetje, ki jih je zmotil Francoz, nato pa vojaški spopad s francoskimi krmarji, v katerem je Roslavlev prevzel poveljstvo kmečkega odreda - prijatelji na koncu gredo ven na bivakih njegovega polka.
Francozi so 10. oktobra zapustili Moskvo, "saj so bili v njej mesec in osem dni". Po nekaj neuspešnih poskusih prodora v najbogatejše ruske pokrajine se je Napoleon moral umakniti po isti poti, ki jo je vodil do Moskve, pri čemer je na tisoče vojakov umiralo od mraza in lakote. Na prehodu Berezine je bil Nejev korpus poražen, zadnje upanje francoske vojske in po bitki pri Borisovu se je francosko umikanje spremenilo v pravi pobeg. Prijatelji so se poslovili od meje: general, pod katerim je bil Roslavlev adjuntant, je s svojo divizijo združil čete, ki so oblegale Danzig, in Zareckov polk je ostal na čelu vojske.
Obleganje Danziga, kjer se nahaja francoski garnizon pod poveljstvom generala Rappa, se je zavleklo. Že novembra 1813, v obleganem mestu lakote. Zunanjost Rusov nenehno vznemirjajo partizanski napadi francoskega garnizona, med njimi pa je tudi "peklenska četa" husarskega častnika Shamburja, ki vso noč pleše po hrani v vaseh, kjer stojijo ruske postojanke. V eni od teh vrst je Shambyur ujel Roslavljeva. Tako pride v Danzig.
Dva tedna mineva. Pod pretvezo zatiranja "neugodnih govoric" o francoski vojski, ki se je ujetnik, ki se domnevno širi po mestu, pošljejo Roslavleva v zapor. To je pravzaprav trik, ki ga je izumil načelnik generalštaba general Derikou-rum. V zaporu sedi neki florentinski trgovec, osumljen je, da je ruski vohun. Roslavlev posadijo skupaj s trgovcem, da bi prisluhnili pogovorom, saj bo njihova želja po govorjenju domačega jezika tako naravna.
Trgovec se resnično izkaže za ruskega častnika. Še več, poznajo se: malo pred vojno je Roslavlev postal nenamerna priča dvoboja med tem častnikom in Francozom, ki si je dovolil izjemno žaljive pripombe o Rusiji in ruskem narodu.
Sumi, da jih prisluhnejo, trgovec na to opozori Roslavljeva z noto in prosi Vladimirja, da takoj po izpustu iz zapora najde žensko, ki živi na Gledališkem trgu v petem nadstropju rdeče hiše v šesti sobi. Obupno je bolna in če jo bo Roslavlev našel živ, ji morajo povedati, naj zažge papirje, ki ji jih je izročil trgovec Dolcini.
Roslavleva je res kmalu izpuščena (Shambur je vabil za njega), naslednji dan pa se je odpravil na Gledališki trg. Peto nadstropje rdeče hiše se je izkazalo za bedno podstrešje, soba presega v svoji revščini. V umirajoči ženski Roslavlev z grozo prepozna Pauline. Že zdavnaj ji je odpustil. Še več, ko je izvedel, da je ona, potem ko je vse žrtvovala, šla za svojim možem, da bi delil vse njegove stiske in trpljenja, je začel do nje največ spoštovati.
Umirajoča Paulina pripoveduje Vladimirju tragično zgodbo svojih potepanj. Konvoj, v katerem je Polina zapustila Moskvo z umikajočimi se Francozi, so napadli Kozaki. Rešil jo je prijatelj Adolf, ki je prevzel nadaljnjo skrb zanjo. Po tej prepirki Polina ni videla več svojega moža in šele pozneje je ugotovila, da Adolf ni več živ. Nato je rodila sina. Njen edini zaščitnik, ki je skrbel zase in za svojega otroka, ki se ni mogel vzdržati stisk umika, je zbolel za vročino in umrl. Medtem ko je bilo denarja, je Polina živela v samoti, z nikomer ni komunicirala. Nato so Rusi oblegali Danzig, denarja je zmanjkalo in se je obrnila k francoskemu generalu po pomoč. In potem je Polina zase naredila grozno odkritje: pustila je družino, očetje, žrtvovala vse, da bi postala žena Senikurja, in vsi okoli nje ga smatrajo za svojo ljubico. Potem je sina nahranila, da je prosila milostinjo, a je njen otrok umrl od lakote. Dolcini jo je rešil pred stradanjem, ki je zvedela, da je Rusinja, sodelovala pri njeni usodi.
Pauline začne neumnosti. Vladimir jo čez nekaj ur spet zapusti, da jo obišče. V tem času ruske čete začnejo granatirati mesto. Roslavlev je bil ranjen v glavo.
Ruski častnik je že več kot dva tedna na robu groba. Zbudi se pri svoji postelji odkrije Shambyurja. Hussar pohiti, da svojemu ujetniškemu prijatelju sporoči zadnje novice: prva - Rapp bo podpisal predajo, druga - Dolcini ni bil trgovec, ampak ruski partizan. Kmalu mu je uspelo priti iz zapora, nakar se je Dolcini tako dobro sprijaznil z generalom Dericourtom, da je "trgovcu" naročil, naj dostavi pomembne pošiljke Napoleonu. Ko se je »trgovec« umaknil iz francoskih obhodov, se je po pravem imenu prikazal pred Kozaki in se vljudno poslovil od žandarja.
Shambur je, kaže, dobro poznal Dolcinija, zato je "trgovec" pismo poslal Roslavlevu. Bilo je pismo umirajoče Poline. V njem se je poslovila in izrazila zadnjo željo: prosi Roslavleva, da se poroči z Olenko, ki ga je vedno strastno ljubila.
Kar nekaj let je minilo. Roslavlev je že zdavnaj odstopil in živi z ženo Olenko in dvema otrokoma v Uteshinu, kamor prihaja Zaretsky po šestih letih ločitve. Imajo o čem govoriti. Ob spominu na vojne dogodke je Zaretski vprašal Polinovo usodo: "Kaj se je zgodilo s to nesrečno? <...> Kje je zdaj? " Kot odgovor na vprašanje je Roslavlev žalostno pogledala spomenik iz belega marmorja pod ptičjo češnjo: pod njim je bila pokopana Polina ključavnica, ki jo je v poslovilnem pismu dala Roslavlev ...