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