Закончив построение, полки и дружины пошли вперед. На гребне валов маячили конные разведчики, в случае наступления половцев они должны были предупредить князей и воевод об опасности. Русская рать продолжала движение на юг, слева осталась крепость Треполь, возвышающаяся над крутым берегом Днепра. Столпившиеся на стенах воины гарнизона приветствовали русское войско радостными криками, трубили в трубы и били в бубны. Они были уверены, что половцев отбросят обратно в степь и непосредственная угроза Треполю будет ликвидирована. Примчался ещё один конный разведчик. Дружинник поведал князьям, что половецкий стан пришел в движение, степняки седлают коней и готовятся к бою. Мономах приказал ускорить движение, он хотел достичь Змиевых валов раньше половцев. Русские воины сумели опередить противника и стали медленно подниматься по склонам гигантской насыпи. Когда запыхавшиеся ратники взобрались на гребень валов, то увидели вдали половецкую конницу. Степняки наползали словно туча, готовая в любой момент разразиться страшной грозой. Полки стали спускаться с насыпей и располагаться у их подножия, конные дружины заняли проходы между валами.

Бой начали половецкие конные лучники. Смертоносный дождь пролился на русское воинство, степняки атаковали несколькими волнами. Опустошив колчаны, передовые отряды половцев уходили в тыл, освобождая место новым сотням. Степняки быстро меняли друг друга, стрелы непрерывно падали на плотные ряды ратников. Княжеские лучники поднялись на валы и сверху били вражеских конных стрелков, нанося противнику ощутимый урон. Катались по земле подстреленные кони, корчились в траве раненые наездники, повсюду лежали утыканные стрелами мертвые тела. Постепенно половецкие конные лучники стали смещаться к Днепру, направив острие атаки на черниговские и переяславские полки. Под непрекращающимся ливнем стрел русские ратники опускались на колени и поднимали над головами большие миндалевидные щиты.

Пока центр и левое крыло русской рати подвергалось непрерывным атакам лучников, против киевских полков сосредоточилась тяжеловооруженная половецкая конница. Степные батыры ждали команды ханов, чтобы пойти вперед и изрубить вражеское воинство. Загрохотали барабаны кочевников, высоко в небо взвились мохнатые бунчуки, лавина всадников устремилась на киевлян. Навстречу половцам на рысях пошла дружинная конница, впереди строя гридней размахивая мечом, мчался Святополк. Началась ожесточенная рубка, где перевес клонился то на одну, то на другую сторону. Пользуясь численным превосходством, половцы усилили натиск, но в это время в бой вступила пешая киевская рать и потеснила конницу противника. Степняки пятились, русские их преследовали, вскоре между киевлянами и переяславцами образовался разрыв, увеличивающийся с каждой минутой. В эту брешь ханы бросили отряды свежей конницы, отсекли полки Святополка от остальной рати и стали оттеснять к валам. Владимир и Ростислав ничем не могли помочь родственнику, поскольку их полки и дружины подвергались массированным атакам конных стрелков.

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