Оправившись от изумления, Кара-Мустафа 12 июля бросил в атаку 20‑тысячный турецкий корпус и Крымскую орду. Полки Змеева отступили под зверским натиском, но когда неприятель был остановлен огнем Пушкарского полка С.Ф. Грибоедова – оправились и контратаковали. Турки и татары бежали с поля – преследования не было. Они неудачно атаковали 15 июля – Ромодановский стоял как вкопанный, не делая ни шагу к Чигирину.

Согласно официальной версии, командующий по царскому указу ждал подкрепления от князя К.М. Черкасского, отправленного вербовать калмык и прочих в легкую кавалерию. И впрямь, 28 июля Черкасский привел от 2 до 4 тысяч «бедных, голодных и оборванных наездников» на фронт, где даже регулярная конница русских и турок в основном держалась в резервах. 31 июля Ромодановский начал движение к Чигирину, в котором уже три недели шли жесточайшие бои с применением самого передового фортификационного, минного и артиллерийского искусства.

Турки использовали сопровождение атаки перемещаемым в глубь обороны артиллерийским огнем через головы наступающих, гранаты и штурмовые отряды. Ежедневно на Чигирин обрушивалось до тысячи ядер и бомб. Русские совершали такие чудеса, что, согласно французским источникам, Кара-Мустафа вынес на военный совет решение снять осаду. Однако турецко-крымские командиры, памятуя о сильном изменении состава своей корпорации после ретирады Ибрагим-паши, решились не только продолжать штурм крепости, но и занять господствующие высоты на другом берегу Тясьмина.

Этим было предопределено кровавое сражение за «Чигиринские горы» (высоты над Тясьмином вокруг Стрелковой горы), на которые круто поднимался с приднепровской равнины Кувечинский взвоз. 31 июля янычарские корпуса Каплан-паши и Кер-Гасан-паши, окопавшиеся на высотах с 50 пушками и усиленные отрядами татар, открыли огонь по русским, продвигавшимся по Кувечинскому взвозу к переправе через Тясьмин. В ночь на 1 августа атака на высоты не удалась. Вскоре оказалось, что условия местности не позволяют русским поддержать штурм артиллерией.

Вся тяжесть боев легла на регулярную пехоту: прежде всего правофланговые дивизии генерал-поручика А.А. Шепелева и генерал-майора М.О. Кровкова (6 тысяч солдат). Несколько атак было отбито, но русские не отступились. Под ужасным огнем неприятеля генералы повели солдат в бой, выйдя перед строем и надев шляпы на шпаги. Янычары потеряли ретраншементы и батареи, бросили лагерь и даже бунчук, но Каплан-паша, собрав резервы, отрезал русских на горе.

Шепелев, срубивший шпагой бунчук паши, был ранен. Построившись вокруг него в каре, солдаты стойко оборонялись, дожидаясь подхода главных сил. У них осталось мало боеприпасов, но помогали пушки, втащенные на гору руками. Резервный корпус думного генерала В.А. Змеева ужаснулся новому штурму, но 9 стрелецких полков (6 тыс. человек) центра армии Ромодановского вовремя пришли на помощь солдатам. За стрельцами на взвоз взлетела конница Змеева.

3 августа защитники Чигирина наблюдали паническое бегство турок, преследуемых русской кавалерией, к горящим мостам через Тясьмин. Казаки Самойловича с левого фланга армии Ромодановского ворвались уже в главный турецкий лагерь, отряды Косагова и генерала Вульфа заняли острова на Тясьмине. И тут российская армия, стоявшая буквально в трех верстах от Чигирина, будто заснула.

Героический комендант крепости окольничий И.И. Ржевский, наблюдавший сражение со стен Чигирина, был сражен турецким ядром. Возглавивший оборону генерал-майор Патрик Гордон напрасно просил Ромодановского ослабить турецкий натиск на крепость, атаковав лагерь визиря. Командующий не шелохнулся даже 11 августа, когда турки взорвали подкопы и взяли нижний город, где эскадроны полковника фон Вестгофа, прикрывая бегство казаков, полегли почти целиком. Всего с четырьмя полками Гордон отстоял замок, отбил ворота нижнего города и восстановив переправу, по которой должна была прийти помощь.