Для выполнения операции 1-я Конная армия была сосредоточена на участке в 10 км северо-восточнее Ново-Фастова. Боевое построение 1-й Конной армии было многоэшелонным, что обеспечивало наращивание силы удара в ходе наступления. В первом эшелоне находилась 4-я кавалерийская дивизия, уступом за ее флангами — 14-я и 11-я кавдивизии и в третьем эшелоне — 6-я кавалерийская дивизия и особая кавбригада. В связи с тем что предстоявший рейд требовал быстроты передвижения частей, командование 1-й Конной армии 4 июня приказало разгрузить конные части от малоподвижных обозов и отправить их в тыл в район станции Поташ. Это движение обозов было воспринято польской разведкой как отвод в тыл всей 1-й Конной армии.
К вечеру 3 июня 1-я Конная армия заняла исходный рубеж для наступления. В эти дни стояла дождливая погода. Польское командование рассчитывало, что плохая погода помешает советским войскам начать военные действия. На рассвете 5 июня 1920 г. 1-я Конная армия перешла в наступление. Дождь и густой туман позволили советским конникам скрытно выйти на рубеж атаки и перейти в стремительное наступление. Когда же польские войска заметили советских бойцов, было уже поздно. Под ураганным огнем пулеметов и артиллерии красные конники, искусно сочетая бой в пешем и конном строю, преодолели проволочные заграждения противника и смяли его передовые части. Через два часа после начала атаки польский фронт был прорван в районе Сквира — Самгородок. В этих боях особенно отличились кавалеристы 14-й дивизии под командованием А.Я. Пархоменко.
Наступление советских войск было настолько стремительным, что к вечеру того же дня 1-я Конная армия прорвалась севернее и восточное Казатина, разрушив в ряде мест железную дорогу Фастов — Казатин — Липовец, и вышла в тыл 3-й польской армии. В 18 часов 7 июня 4-я кавалерийская дивизия овладела Житомиром, уничтожив польский гарнизон и освободив из плена 7 тыс. красноармейцев, которые сразу же встали в строй. На станции были захвачены два вагона военного снаряжения. В этот же день 11-я кавалерийская дивизия заняла Бердичев. Кроме того, 1-я Конная армия разбила в районе Белополья польскую конную группу под командованием генерала Савицкого, прикрывавшую левый фланг 6-й польской армии. К 8 июня 1-я Конная армия окончательно сломила сопротивление войск противника, сосредоточенных в районе Казатина и Бердичева. Глубина прорыва 1-й Конной армии в тыл польских войск составила 120–140 км. Польский фронт на Украине оказался расколотым на две части. Потеряв управление своими войсками, польский штаб во главе с Пилсудским, находившийся в Житомире, в спешке передислоцировался в Новоград-Волынский.
На Днепре советским войскам содействовала Днепровская военная флотилия, которая с захватом поляками Киева оказалась разъединенной: одни суда действовали севернее, другие южнее Киева. В связи с этим было решено разбить флотилию на две боевые группы: Североднепровскую и Южноднепровскую. Базой Южноднепровского отряда из 16 боевых и 14 вспомогательных судов был Екатеринослав. В соответствии с общим планом наступления войск Юго-Западного фронта Североднепровский отряд флотилии, отошедший на р. Сож, должен был участвовать в форсировании Днепра севернее Киева и поддержать огнем артиллерии наступление ударной группы 12-й армии. Для этого отряду предстояло совершить переход с реки Сож на Днепр. Задача была исключительно трудной: вход в Днепр противник прикрывал сильным артиллерийским и пулеметным огнем в районе местечка Лоева, где разрушенный мост через Днепр загородил фарватер реки. Корабли должны были идти через узкий проход под мостом у самого берега, ежеминутно рискуя сесть на мель или натолкнуться на ледорезы. Однако другого пути в Днепр не было.
В ночь на 2 июня 1920 г. отряд из девяти судов, вооруженных артиллерией и пулеметами, двинулся к Днепру. Чтобы не создавать шума от колес, корабли шли малым ходом. Проходя под мостом, они были обстреляны обнаружившим их противником. Советские корабли повели ответный огонь. В результате весь отряд, за исключением одной канонерской лодки, преодолел лоевскую преграду, вышел в район Печки и принял участие в форсировании Днепра вместе с частями 12-й армии. В этих боях особенно отличились экипажи канонерских лодок «Малый», «Мстительный», «Геройский» и тральщика «Трал». По окончании переправы частей 12-й армии Северный отряд Днепровской флотилии перебросил по реке стрелковую бригаду на Сваромье в Вышгород, а 9 июня принял участие в боях за переправу через р. Ирпень. Все это позволило ударной группе 12-й армии в составе 7-й стрелковой дивизии и Башкирской кавалерийской бригады после ожесточенных боев 3 июня форсировать Днепр. Отразив контратаки противника, стремившегося сбросить в Днепр переправившиеся советские части, к 8 июня ударная группа 12-й армии вышла в район Дымера.
Не менее успешно действовала Южная группа Днепровской флотилии, которая вместе с приданным ей десантом (около 1 тыс. человеке 10 пулеметами и 2 пушками) после упорных боев 7 июня овладела городом Ржишев, а 10 июня выбила части противника из сильно укрепленного пункта Триполье. Это способствовало успешному наступлению фастовской группы в боях в районе Триполья, носивших особенно ожесточенный характер, образцы мужества и героизма проявили бойцы и командиры канонерских лодок «Губительный», «Могучий» и «Грозящий». После прорыва вражеских укреплений в районе Триполья Южному отряду Днепровской флотилии открывался путь на Киев. С востока на Киев наступала 58-я стрелковая дивизия 12-й армии.
Выход частей 1-й Конной армии в глубокий тыл 3-й польской армии и успешное продвижение ударной группы 12-й армии создали благоприятные условия для полного окружения польских войск в районе Киева. Реввоенсовет Юго-Западного фронта 8 июня потребовал от 12-й армии занять район станций Бородянка и Ирша, с тем чтобы перерезать последнюю магистраль Киев — Коростень, по которой противник еще имел возможность отвести свои войска из района Киева. Одновременно Фастовская группа войск должна была пехотными частями не позднее 10 июня овладеть районом Фастов — Корнин, а кавалерийской бригадой под командованием Г. И Котовского перерезать шоссе Киев — Житомир. 14-я армия должна была, подтянув в кратчайший срок 8-ю кавалерийскую дивизию, продолжать наступление в направлении Винница — Жмеринка.[102] Успешно развивалось и наступление Фастовской группы. Уже 8 июня в результате стремительной атаки бригада Котовского освободила город Сквиру. Затем части Фастовской группы заняли города Белая Церковь и Фастов, отрезав тем самым пути отхода противника из района Киева на юг и юго-запад.
Выполняя поставленную задачу по окружению польских войск в районе Киева, советские войска усилили свой натиск. Ударная группа 12-й армии развернула наступление на широком фронте. Ломая сопротивление противника, ее части 11 июня с боями переправились через р. Припять и овладели местечком Чернобыль и станцией Ирша, захватив свыше 300 пленных и железнодорожный эшелон с грузом. В это время подошла 73-я бригада 25-й стрелковой дивизии, которая с ходу вступила в бой. Подход частей 25-й Чапаевской дивизии значительно усилил ударную группу 12-й армии.
Ожесточенные бои развернулись в это время и на участке 14-й армии. Ее части несколько раз атаковали противника, засевшего в городе Гайсин. Поляки прилагали все усилия, чтобы остановить наступление 14-й армии. Они неоднократно предпринимали контратаки Бои в этом районе продолжались несколько дней, и утром 13 июня советские войска заняли Гайсин.
9 июня 1-я Конная армия начала наступление — на Киев, нанося удар с тыла по 3-й польской армии. В это время 12-я армия подходила к железной дороге Киев — Коростень в районе Бородянка — Тетерев; Фастовская группа заняла город Фастов, а 1-я Конная армия, выйдя в район Корнин — Ходорков — Войтовцы, создала для 3-й армии угрозу окружения. Вместе с частями 1-й Конной армии в тыл противника вышла и кавалерийская бригада Г. И. Котовского, перерезав шоссе Киев — Житомир. Положение 3-й польской армии оказалось катастрофическим. Она вынуждена была поспешно отступать. В связи с тем что войска Фастовской группы заняли Фастов, а 3-я польская армия начала отход из района Киева, командование Юго-Западного фронта посчитало дальнейшее продвижение Конной армии на восток излишним. Полагая, что войск 12-й армии и Фастовской группы будет достаточно для разгрома 3-й польской армии, 10 июня РВС Юго-Западного фронта приказал 1-й Конной армии повернуть на запад и выйти в район Житомир — Казатин для дальнейшего удара по тылам 6-й польской армии.[103]