Узнав о начале восстания казаков под руководством Хмельницкого, великий коронный гетман Николай Потоцкий, не дожидаясь помощи от могущественного магната Иеремии Вишневецкого, 21 апреля 1648 года направил против казацко-татарских отрядов два крупных соединения, надеясь подавить мятеж быстрым точечным ударом. Он писал: «Этот безрассудный человек, Хмельницкий, не преклонится перед милостью».
Первым войском командовал его 24-летний сын — Нежинский староста Стефан Потоцкий, — которому помогал поручик королевских гусар Стефан Чарнецкий. Эти силы, двигавшиеся по степи, изначально насчитывали около 3000 человек, а именно: 150 «крылатых» гусар, 550 «панцерных» казаков, 700-800 драгун, 1500 реестровых казаков из Белоцерковского и Переяславского полков и 6 орудий. Другой отряд под началом наказного гетмана Барабаша, состоявший преимущественно из реестровых казаков числом около 3500 человек при 8 легких пушках, двинулся на лодках-чайках по Днепру.
Вместе с «сухопутным» отрядом Потоцкого, как это нередко бывало в то время, двигался большой обоз. У каждого гусара была одна или две запасные лошади, несколько слуг и собственные повозки с имуществом. Сам Потоцкий не имел серьезного военного опыта и во всем полагался на Чарнецкого, который и был реальным командиром в его войске.
Хмельницкий, который при себе имел лишь тысячу казаков и шесть или семь тысяч татар под командованием мурзы Тугай-бея, двинулся навстречу полякам. Первые стычки между передовыми отрядами неприятелей произошли уже 27-29 апреля, когда войско Потоцкого достигло Желтых вод (приток реки Ингулец). Там поляки и начали готовиться к главному сражению. Был развернут оборонительный лагерь. При этом польский военачальник совершенно не ожидал увидеть в неприятельском войске татар, поскольку их союз с казаками был тайным, и польские власти о нем до той поры не подозревали.
Тогда же, 29 апреля, отряд татар попытался атаковать польские войска, стоявшие вне лагеря, однако тем на помощь пришли товарищи из укрепления, и крымцев удалось обратить в бегство. Один из пленных татар, захваченных в ходе боя, сообщил, что войско их хоть и большое, но вооружено довольно плохо. Поразмыслив, Потоцкий и его офицеры решили держать оборону до подхода гетмана с основными силами. Однако первыми подкрепления подошли к Хмельницкому, и казаки с татарами, которые теперь обладали двукратным численным превосходством, наглухо обложили польский лагерь.
Первый серьезный штурм состоялся 1 мая — союзники пошли на приступ синхронно, на двух участках польской обороны. Казаки атаковали валы, не прикрытые рекой, а Тугай-бей повел своих татар в обход, намереваясь форсировать реку вдали от глаз польских дозорных, однако природа сыграла с крымцами злую шутку. Берега реки оказались заболочены, в результате чего татарская конница замешкалась с переправой, и когда, наконец, мурза преодолел водное препятствие, поляки уже благополучно отбили две атаки казаков, принудив тех выйти из боя. Теперь у солдат Потоцкого были развязаны руки, и они встретили накатившихся татар плотным огнем. Поняв, что затея не выгорит, Тугай-бей отвел своих молодцов от вражеского лагеря.
После неудачи казацкий гетман и татарский мурза отправили крымскому хану послание, в котором сообщали, что окружили польский лагерь у Желтых вод, однако нуждаются в подкреплениях, оружии и порохе, чтобы эффективно его атаковать. В ночь с 1 на 2 мая казаки под покровом темноты подтащили к крепостным валам легкую пушку и открыли огонь, однако вскоре гарнизон укрепления смог прогнать их прочь.
Началась осада, сопровождавшаяся постоянными столкновениями, причем союзники, осознававшие свое численное преимущество, пользовались им, давая друг другу отдыхать, — татары обычно атаковали днем, а казаки — ночью. У коронных войск было достаточно еды и воды, однако очень скоро возникли сложности с добычей корма для лошадей. Попытки пасти их вблизи укреплений не увенчались успехом, поскольку тотчас появлялись татары. Однажды им даже улыбнулась удача, и они смогли отбить некоторое количество польских лошадей.
О том, насколько плотной была блокада, свидетельствует ситуация, когда Потоцкий попытался отправить послание к отцу со специально обученной собакой, однако ее перехватили, письмо забрали, а животное отправили назад в укрепление. В другой раз польский командующий попробовал отправить гонца на быстром коне, однако и его перехватил татарский разъезд.
Хмельницкий, знавший о «речном» отряде Барабаша, расставил по берегу Днепра свои дозоры с приказом во что бы то ни стало встретить реестровых казаков и вступить с ними в переговоры. В ночь с 3 на 4 мая у Каменного Затона к реестровым скрытно прибыл его посланник Иван Ганжа, который начал склонять казаков к переходу на сторону восставших. В частности, он говорил: «Чью кровь вы собираетесь проливать? Отчего не уйдете к братьям? Разве у нас не одна мать — Украина?» Агитация возымела действие, и в ту же ночь реестровые восстали. Они убили Барабаша и его сторонников, выбрали себе новым наказным Филона Дзедзяла и двинулись к Желтым водам, где 6 мая присоединились к Хмельницкому.
Видя это, Потоцкого покинули и реестровые, находившиеся непосредственно в его подчинении. Вместе с ними ушли и многие драгуны, которые в большинстве своем были русинами. В итоге под его началом осталось около тысячи человек, и теперь соотношение сил было уже 10:1 в пользу мятежников.
Осажденные были истощены постоянными стычками с неприятелем, а измена товарищей по оружию окончательно подорвала их дух. Солдаты начали роптать, и Стефан Потоцкий был вынужден вступить с Хмельницким в переговоры. В итоге 14 мая стороны пришли к согласию — польский военачальник обещал сдать шанец со всеми орудиями и боеприпасами, а казаки обязались пропустить его и всех его людей и дать им уйти к своим. В качестве искренности своих намерений казаки согласились оставить у поляков двух заложников — полковников Кривоноса и Крысу. Утром 15 мая казаки явились в польский лагерь вместе с заложниками, и вскоре «одни пили горилку с товарищами (гусарами), другие — грабили возы».
Однако полякам стало ясно, что что-то не так. Тугай-бей арестовал польских переговорщиков, а Кривонос и Крыса, едва дождавшись как их товарищи забирают польские пушки, хитростью сбежали из укрепления назад к своим. В итоге Потоцкий остался и без орудий, и без заложников.
Хитрый Тугай-бей предложил начать новые переговоры — теперь уже лично с польским военачальником. Тот согласился и выехал из лагеря в сопровождении 20 человек, однако практически сразу заметил засаду и поспешно вернулся в лагерь. Мурза, который намеревался взять знатного пленника, был в ярости из-за того, что его задумка пошла прахом, и стал требовать от Хмельницкого генерального штурма лагеря.
На этот раз поляки не могли удержать весь лагерь и предпочли защищать два наиболее крупных вала. Бой продолжался весь день 15 мая и закончился победой осажденных — казаки и татары отступили. Впрочем, всем было ясно, что, если не предпринять попытку прорыва, следующий штурм отразить уже не удастся. Поэтому после наступления темноты около 400 человек — все, что осталось от польского войска, — начали готовиться к решительному броску.
В первые минуты 16 мая, когда, как сообщает источник, над Желтыми водами взошла луна, поляки двинулись прочь из лагеря в северном направлении — в сторону Княжьих Байраков.
Татары, узнавшие о движении в неприятельском лагере, «не давая знать казакам», бросились в погоню. На свежих и сытых конях они без труда нагнали остатки армии Потоцкого, завязался бой. Поляки, у которых при себе было некоторое количество повозок, забрались на них и принялись отстреливаться от наседавшего врага. Таким образом, отбиваясь, колонна медленно продолжала движение и прошла еще две мили, не теряя надежду вырваться.
Наконец, к рассвету уже у самых Княжьих Байраков татары с казаками, доставившими к месту боя трофейные польские пушки, атаковали вновь, и этот удар стал фатальным. Около 300 польских солдат попали в плен, Стефан Потоцкий был ранен в горло татарской стрелой, и, промаявшись три дня, умер от гангрены в казацком плену. Непосредственный участник того боя шляхтич Станислав Друшкевич впоследствии писал: «Кому Господь Бог не дал умереть — был взят живым, и ни один человек не смог убежать оттуда».
Стефан Чарнецкий тоже попал в плен, однако выжил и вскоре был освобожден. Именно он отвез маленького сына Стефана Потоцкого к своим в Кодак.