Осада замка продолжалась два месяца. Осажденные отбили несколько приступов. Тем временем к Збаражу подходило 30-тысячное войско Яна Казимира. Узнав об этом, Хмельницкий в конце июля предпринял общий штурм под прикрытием гуляй-городов. Однако люди Вишневецкого сделали вылазку и сожгли гуляй-города, вынудив казаков отступить.
Оставив у Збаража небольшой блокирующий отряд, Хмельницкий выступил с главными силами навстречу польскому королю. Они встретились недалеко от Зборова на реке Стрыпе. С учетом потерь, понесенных у Збаража, и оставленного у замка отряда, Хмельницкий имел лишь небольшой численный перевес. С утра 5 августа польское войско стало переправляться через реку по двум мостам. Хмельницкий поочередно атаковал оба отряда польского войска, успевшие переправиться на правый берег, и уничтожил их. Затем в бой вступили главные силы. Казакам и татарам удалось опрокинуть левое крыло неприятеля, где стояла шляхетская конница из собственно польских земель. Король бросил ей на помощь рейтарскую конницу. Одновременно правое крыло, состоявшее из польской шляхты Брацлавского и Подольского воеводств, перешло в контратаку. В результате наступление украинского войска было остановлено. Поляки смогли укрыться в обозе и обнести его шанцами.
Утром 6 августа казаки атаковали польский лагерь с фронта, а татары — с тыла. Одновременно несколько казачьих сотен ворвались в Зборов, занятый слабым польским гарнизоном. Однако накануне вечером Ян Казимир направил письмо крымскому хану, где предлагал ему любые уступки в обмен на прекращение татарами боевых действий. В разгар штурма польского лагеря хан потребовал от Хмельницкого прекратить наступление и пойти на переговоры.
22 августа между Украиной и Польшей был заключен Зборовский мирный договор. Число реестровых казаков по этому договору увеличивалось до 40 тысяч (столько их фактически и было в армии Хмельницкого). Король обязался платить им жалованье и снабжать оружием. Основные воеводства Украины, Киевское, Брацлавское и Черниговское, должны были иметь православных воевод, и на них распространялась власть гетмана. Польские войска не должны были оставаться на Украине. Произошел размен пленных, в результате чего в Польшу вернулись гетманы Потоцкий и Калиновский.
Сейм в Варшаве Зборовский договор не утвердил, посчитав чрезмерными сделанные Хмельницкому уступки, и война возобновилась. В 1650 году Хмельницкий совместно с татарами совершил поход в Молдавское княжество и на некоторое время подчинил его своему влиянию. 4 тысячи казаков вторглись в Литву и с помощью местных повстанцев сковали значительную часть литовских войск.
Поляки пока что активных боевых действий на Украине не вели, собираясь с силами. В ноябре 1650 года сейм принял решение увеличить численность польского коронного войска до 36 тысяч человек, а литовского войска — до 18 тысяч. Фактическая численность польско-литовской армии была еще больше, так как многие магнаты (Вишневецкие, Любомирские, Радзивиллы и др.) имели частные армии по несколько тысяч человек.
В феврале 1651 года польский отряд вторгся в Подолию и разбил казачий полк Данилы Нечая (сам Нечай погиб). В ответ Хмельницкий с главными силами и вместе с союзниками-татарами вторгся на Волынь. Он выпустил универсал (манифест) к польским крестьянам, призывая их восстать против шляхты. Гетман рассчитывал сокрушить Речь Посполитую и посадить на трон в Варшаве своего ставленника. Ян Казимир выступил против Хмельницкого с 50-тысячной армией. Украинско-татарское войско насчитывало около 70 тысяч человек. В июне 1651 года обе армии сошлись под Берестечком.
Сражение началось 18 июня. Отряд Вишневецкого опрокинул татарскую конницу. При этом был убит давний соратник Хмельницкого — перекопский мурза Тугай-бей. Вся татарская армия в беспорядке бежала с поля боя. Хмельницкий бросился к хану, пытаясь остановить бегство, но Ислам-Гирей увез гетмана с собой, фактически превратив его в заложника. Казацкое войско было окружено. Многие казаки потонули при отступлении через болото, часть попала в плен, часть погибла. Как отмечал один из участвовавших в битве поляков, неприятель не просил пощады. Вырваться удалось лишь меньшей части украинской армии во главе с полковником Богуном. Весь обоз и артиллерия достались победителям.
Через несколько дней Хмельницкий смог откупиться от хана, но войска у гетмана больше не было. Украина оказалась беззащитной перед неприятельским вторжением. 20-тысячная армия литовского гетмана Радзивилла разгромила казачий полк Мартына Небабы (полковник погиб в бою) на Черниговщине и 20 июля заняла Киев. Город был подожжен и почти полностью выгорел. Литовское войско, испытывавшее недостаток продовольствия и страдавшее от эпидемии чумы, вынуждено было уйти из Киева к Паволочи.