Сили обох сторін були приблизно рівними. Козацьке військо нараховувало близько 100 тисяч чоловік. Правда, лише половину там становили воїни-професіонали (орієнтовно 40–50 тис.). Інша частина війська — це селяни й міщани, що не мали бойового досвіду. До козаків приєдналася татарська кіннота від керівництвом хана Іслама-Гірея, котра нараховувала від 30 до 40 тисяч вершників. Урядові війська складалися з приблизно рівних частин, кожна з яких становила близько 40 тисяч чоловік. Це — регулярне військо, магнатські загони та посполите рушення[655]. Можливо, ці цифри є дещо завищеними, але вони загалом відображають ситуацію.
Армії зійшлися неподалік містечка Берестечка (зараз місто в складі Горохівського району Волинської області) в долині річки Стир[656]. Основні події битви, яка вважалася найбільшою в тогочасній Європі, відбулися в кінці червня — на початку липня в районі сіл Пляшева та Острів (зараз це села Радивилівського району Рівненської області). Перші два дні битви, 28–29 червня, не дали ні одній, ні другій стороні якихось помітних переваг.
Перелом відбувся на третій день, 30 червня. Пополудні, коли розвіявся туман, в атаку пішла кіннота Яреми Вишневецького, до неї приєдналися інші загони короля. Постійно працювала польова артилерія. Урядовим військам вдалося потіснити козацько-татарські загони. Вони навіть почали прориватися до пагорбу, де знаходився намет хана. Одне із ядер розірвалося неподалік намету кримського правителя.
У цей час Іслам-Гірей вирішив покинути поле бою, забравши з собою татарську кінноту. Йому навперейми ніби подався Хмельницький, прохаючи такого не робити. Натомість хан захопив Хмельницького й забрав з собою. Ці події в українській літературі однозначно трактуються як «зрада хана». З моральної точки зору подібні речі справді можна трактувати як зраду.
Але чи правомірне таке трактування в контексті тодішніх відносин між кримським ханом і козацьким гетьманом? Перший вважався старшим, другий же мав йому коритися. У цьому сенсі ніби немає підстав говорити про зраду.
Взагалі «зрада хана» викликає чимало запитань. Чому так учинив кримський правитель? Найбільш вірогідно виглядає версія, що Іслам-Гірей злякався наступу польських військ. Навіть допустив, що Хмельницький його зраджує. Тому вирішив відступити, щоб не мати великих втрат.