1647 год. Возвращаясь с посольством из Крыма, отряд польского гусарского поручика пана Яна Скшетуского спасает жизнь казачьему сотнику Богдану Хмельницкому. В пограничном городе Чигирине Скшетуский узнаёт от старого полковника Барабаша, что Хмельницкий находится в розыске за кражу королевских писем, способных поднять на бунт Запорожскую Сечь. При этом поручик вступает в драку с чигиринским подстаростой Чаплинским, люди которого пытались убить Хмельницкого, и с позором прогоняет скандалиста.
В Чигирине Скшетуский знакомится со шляхтичами Лонгином Подбипяткой (польск. Podbipięta), богатырём из Литвы, который дал обет хранить целомудрие, пока не срубит одним ударом три головы, и с Онуфрием Заглобой, старым пьяницей и балагуром. Подбипятка, мечтающий попасть на службу к князю Иеремии Вишневецкому, присоединяется к Скшетускому. В дороге они помогают вытащить застрявшую повозку княгини Курцевич, владелицы имения Разлоги, и её племянницы Елены, после чего остаются у них в гостях. Елена и Ян влюбляются друг в друга. Скшетуский узнаёт, что старая княгиня обещала выдать Елену за казацкого атамана Богуна. Он предлагает Елене свою руку, и Курцевичи нехотя соглашаются.
Прибыв к князю Иеремии Вишневецкому в его резиденцию в Лубнах, Скшетуский решает отправиться княжеским послом на Сечь. В Разлогах он прощается с Еленой, а затем из Чигирина отправляется в Сечь по Днепру. В дороге Скшетуский понимает, что война неизбежна, и посылает своего слугу Жендзяна предупредить Курцевичей, чтобы они немедленно уезжали в безопасное место. На Хортице отряд татар и казаков истребляет весь отряд Скшетуского, а он сам попадает в плен. Хмельницкий, ставший к тому времени запорожским гетманом, выкупает его у своего союзника, татарского мурзы Тугай-бея, но оставляет пленника при себе, чтобы тот не сообщил о готовящемся восстании. С разрешения Хмельницкого запорожские казаки чинят самосуд над атаманами Татарчуком и Барабашем, которых гетман заподозрил в предательстве. Узнав о выступлении против него польского гетмана Николая Потоцкого, Хмельницкий приказывает запорожцам выступать. Война начинается.
29 апреля 1648 года. Войско гетмана Хмельницкого подходит к Жёлтым Водам, где их уже ждёт сын гетмана Стефан Потоцкий. Полковник Максим Кривонос ведёт казацкую пехоту в атаку. Крылатым гусарам удаётся оттеснить казаков назад к вагенбургу, однако гусары не смогли прорвать укрепления казаков, которые открыли плотный огонь из самопалов и пушек, и поляки отступают к лагерю. Жаждавший быстрой победы Тугай-бей выражает недовольство гетману. Когда начинается дождь, Хмельницкий приказывает всю ночь беспокоить поляков ложными атаками. Элитные крылатые гусары всю ночь проводят в седле под дождём. Утром польская кавалерия идёт в атаку, но безуспешно. Казаки истребляют гусар, увязших в раскисшей земле, и захватывают холм, на котором укрепилась польская пехота и артиллерия.
Хмельницкий отпускает Скшетуского и после своей второй победы при Корсуне отправляет казачьего полковника Сухоруку в качестве посланника к Вишневецкому, прося его не гневаться за разгром польского войска. Разъярённый князь сажает посла на кол и приказывает войскам немедленно выступать, пока к Хмельницкому не вернулись татары, которые увели пленных в Крым.
Богун задерживает Жендзяна и прочитывает письма Скшетуского к Курцевичам. Влюблённый в Елену подполковник понимает, что его обманули, и на глазах у пана Заглобы наносит слуге пана Скшетуского травму перначом. Богун едет в Разлоги, где убивает старую княгиню и её сыновей, однако и сам получает ранение. Приехавший с ним Заглоба, напоив казаков и связав атамана, бежит с Еленой. Беглецы идут под видом нищих и позднее присоединяются к беглым холопам, бежавшим от Вишневецкого.
Очнувшись, Богун спешит в погоню. На переправе через реку он их почти нагоняет, но Заглоба убеждает показаченных крестьян, что за ними гонятся люди Вишневецкого, и те расстреливают из самопалов отряд Богуна. Атаман в бешенстве падает без сознания. Казаки отвозят ослабевшего атамана в Чигирин, где его лечением занимается Жендзян.
Крестьяне сжигают Разлоги, приехавший Скшетуский горюет на пепелище, полагая, что Елена погибла. Там его находит авангард Вишневецкого. Гусарский поручик присоединяется к отряду князя, который сжигает поместье, учинив расправу над крестьянами.
Заглобе удаётся отвести Елену в крепость Бар.
Скшетуский, Володыевский и Подбипятка натыкаются на отряд беглых холопов, среди которых находят переодетого Заглобу. Заглоба сообщает Яну, что Елена укрылась в неприступном Баре. Однако Богун уже взял крепость и спрятал девушку в Чёртовом яру — убежище ведьмы Горпыны.
Польские силы собираются в лагере под Пилявцами, где самоуверенная шляхта пьянствует. Вишневецкий из-за своего жестокого нрава отстранен от командования. Он посылает четверых друзей в разведку. Отряд Заглобы приезжает в деревню, где идёт свадьба, и принимает участие в празднике. Однако пьяных солдат захватывает в плен Богун, также отправившийся на разведку. Заглоба освобождается и отбивается от казаков. Вскоре ему на помощь приходит отряд Володыевского.
На обратном пути герои получают весть о разгроме польского войска в битве под Пилявцами и приезжают в Збараж, куда отступили остатки польских сил вместе с князем Вишневецким. Скшетуский едет в Киев вместе с посольством престарелого сенатора Адама Киселя. Проводившие друга Заглоба и Володыевский неожиданно встречают в корчме Богуна, которого Хмельницкий отправил послом к принцу Яну Казимиру, и вызывают атамана на дуэль. На дуэли Володыевский ранит Богуна. К торжествующим героям приезжает Жендзян и сообщает, где Богун спрятал Елену.
Володыевский, Заглоба и Жендзян отправляются в Чертов яр, где убивают ведьму и освобождают Елену. На пути к Збаражу на них нападают татары, Заглоба и Володыёвский увлекают погоню за собой, к ним на помощь приходит Подбипятка с отрядом. Жендзян и Елена скрываются.
К Збаражу подходит войско Хмельницкого и орда крымского хана Ислам-Гирея. Гетман Запорожья посылает сотника с предложением сдать крепость. Но в ответ князь устраивает пир с фейерверком. На следующее утро поляки отбивают казачий приступ, во время которого Заглоба ранит Кривоноса и захватывает знамя. Одновременно польская кавалерия во главе с Скшетуским, Подбипяткой и Володыевским сметает казачью пехоту, а также подоспевшую казачью и татарскую конницу. В бою Скшетуский ранит мурзу Тугай-бея.
На следующий день под прикрытием стен гуляй-города казаки идут на второй приступ, но польская артиллерия сметает деревянные стены, а подъехавшую осадную башню подрывает Володыевский. В крепости начинает свирепствовать голод. Хмельницкий просит хана дать ему янычар для новой атаки на крепость. Когда ночью янычары с казаками идут на приступ, Подбипятка одним ударом обезглавливает трёх татарских воинов. Когда наутро командиры поздравляют его с исполнением обета, он решает пробраться через кольцо осады, чтобы сообщить королю Польши Яну Казимиру об бедственном положении защитников. Друзья Подбипятки также вызываются идти. Князь разрешает им прорваться из города, но лишь по очереди.
Подбипятка благодаря ночному дождю пробирается через лагерь казаков, однако в лесу его окружают татары, и после короткой стычки расстреливают из луков. Наутро поляки видят его труп, распятый на осадной башне. Заглоба, пришедший в ярость от гибели друга, бросается на врагов, размахивая саблей. За ним следуют остальные поляки, разрушая башню и рассеивая врагов.
Следующим за Подбипяткой идёт Скшетуский. Дыша через соломинку, он скрытно переплывает реку, избежав встречи с казаками и татарами. Он прибывает в Топоров к королю, который уже собирается идти на помощь Вишневецкому. Узнав от Скшетуского о тяжёлом положении осаждённых, король приказывает немедленно выступать, несмотря на просьбы советников дождаться сбора шляхты и обоза.
Скшетуский встречается с Еленой и своим слугой. Хмельницкий из-за предательства крымского хана заключает договор с князем, и поляки покидают замок. Вопреки приказу гетмана опоздавший к осаде Збаража Богун нападает на них с казаками, но поляки стреляют залпом в упор и берут Богуна в плен. Князь выдаёт Богуна Скшетускому, но готовящийся к свадьбе шляхтич освобождает пленника.
В эпилоге рассказывается о том, как российская императрица Екатерина Великая после череды различных исторических событий на Украине и в Польше уничтожает Запорожскую Сечь, принимает участие в разделах Речи Посполитой, и присоединяет к России Крымское ханство.