Закончив построение, полки и дружины пошли вперед. На гребне валов маячили конные разведчики, в случае наступления половцев они должны были предупредить князей и воевод об опасности. Русская рать продолжала движение на юг, слева осталась крепость Треполь, возвышающаяся над крутым берегом Днепра. Столпившиеся на стенах воины гарнизона приветствовали русское войско радостными криками, трубили в трубы и били в бубны. Они были уверены, что половцев отбросят обратно в степь и непосредственная угроза Треполю будет ликвидирована. Примчался ещё один конный разведчик. Дружинник поведал князьям, что половецкий стан пришел в движение, степняки седлают коней и готовятся к бою. Мономах приказал ускорить движение, он хотел достичь Змиевых валов раньше половцев. Русские воины сумели опередить противника и стали медленно подниматься по склонам гигантской насыпи. Когда запыхавшиеся ратники взобрались на гребень валов, то увидели вдали половецкую конницу. Степняки наползали словно туча, готовая в любой момент разразиться страшной грозой. Полки стали спускаться с насыпей и располагаться у их подножия, конные дружины заняли проходы между валами.
Бой начали половецкие конные лучники. Смертоносный дождь пролился на русское воинство, степняки атаковали несколькими волнами. Опустошив колчаны, передовые отряды половцев уходили в тыл, освобождая место новым сотням. Степняки быстро меняли друг друга, стрелы непрерывно падали на плотные ряды ратников. Княжеские лучники поднялись на валы и сверху били вражеских конных стрелков, нанося противнику ощутимый урон. Катались по земле подстреленные кони, корчились в траве раненые наездники, повсюду лежали утыканные стрелами мертвые тела. Постепенно половецкие конные лучники стали смещаться к Днепру, направив острие атаки на черниговские и переяславские полки. Под непрекращающимся ливнем стрел русские ратники опускались на колени и поднимали над головами большие миндалевидные щиты.
Пока центр и левое крыло русской рати подвергалось непрерывным атакам лучников, против киевских полков сосредоточилась тяжеловооруженная половецкая конница. Степные батыры ждали команды ханов, чтобы пойти вперед и изрубить вражеское воинство. Загрохотали барабаны кочевников, высоко в небо взвились мохнатые бунчуки, лавина всадников устремилась на киевлян. Навстречу половцам на рысях пошла дружинная конница, впереди строя гридней размахивая мечом, мчался Святополк. Началась ожесточенная рубка, где перевес клонился то на одну, то на другую сторону. Пользуясь численным превосходством, половцы усилили натиск, но в это время в бой вступила пешая киевская рать и потеснила конницу противника. Степняки пятились, русские их преследовали, вскоре между киевлянами и переяславцами образовался разрыв, увеличивающийся с каждой минутой. В эту брешь ханы бросили отряды свежей конницы, отсекли полки Святополка от остальной рати и стали оттеснять к валам. Владимир и Ростислав ничем не могли помочь родственнику, поскольку их полки и дружины подвергались массированным атакам конных стрелков.
Киевляне бились люто, в ожесточенной рукопашной схватке перемешались всадники и пешие, русские и половцы. Уступать не хотел никто. Но половцы постепенно брали киевлян в клещи, дробили их строй на части, и вскоре боевой порядок в полках Святополка рухнул. То здесь, то там стали появляться первые беглецы, затем количество испуганных и охваченных паникой людей превратилось в ручеек, наконец, побежало всё киевское войско. Святополк в ярости метался среди ратников, пытаясь остановить поток беглецов, в одиночку бросался на половецких всадников, страшными ударами меча валил степняков вместе с конями на землю. Панцирь Святополка был забрызган своей и чужой кровью, щит иссечен саблями и пробит копьями. Но князь ничего не замечал и, как безумный, продолжал рубить выщербленным клинком. В себя князь пришел, только когда оказался за стенами Треполя. Святополк Изяславич разжал сведенные судорогой пальцы, выронил на землю обломок меча и принял из заботливых рук воеводы ковш студёной воды. Издалека доносился грохот битвы, ещё бились Владимир и Ростислав, но киевскому князю уже было всё равно. Дождавшись ночи, Святополк покинул Треполь и бежал в Киев.
Черниговские и переяславские полки вступили в битву со всей половецкой ордой. Но силы были уже неравны, и степняки одолевали. Сбитые с позиций, русские ратники карабкались на валы и бежали к Стугне, дружины Мономаха и Ростислава прикрывали отход. Под ударами сабель и копий половцев гридни один за другим валились с коней, паника, как половодье, охватывала остатки русской рати. Наконец дружинники не выдержали сумасшедшей рубки, развернули коней и помчались прочь с поля боя. Владимир и Ростислав одновременно примчались на берег Стугны и погнали коней в воду. Бурный поток подхватил Ростислава вместе с конем, закружил в водовороте и вырвал князя из седла. Тяжелая кольчуга тянула Ростислава на дно, Мономах увидел лишь перекошенное от ужаса лицо брата. Владимир бросился на помощь, но нога запуталась в стремени, князь ушел под воду, нахлебался воды и едва не утонул. А когда вынырнул, Ростислава нигде не было видно. С трудом добравшись до берега, черниговский князь упал на траву и долго лежал без движения. Кто-то из дружинников осторожно потрогал Мономаха за плечо. Князь поднялся, оттер с лица речной ил, с трудом залез в седло и помчался прочь от этого проклятого места. Путь его лежал в Чернигов.
* * *
Битва на Стугне закончилась сокрушительным разгромом русской рати. Виновник катастрофы был только один – Святополк Изяславич, своими непродуманными действиями спровоцировавший войну с половцами. Затем киевский князь усугубил стратегическую ситуацию тактическими ошибками. И хотя в битве Святополк дрался мужественно, «держался крепко», это не повлияло на исход битвы, именно разгром киевлян на правом фланге привел к трагедии. Половцы применили тактику, которая была стара как мир: сковав атаками легкой конницы дружины Владимира и Ростислава, нанесли лучшими войсками удар по рати Святополка. По крайней мере, такой вывод напрашивается после прочтения летописных текстов. В любом другом случае действия союзных князей, не оказавших в критический момент битвы помощи Святополку, не поддаются логическому объяснению.
Летописи подробно описывают как расположение русских полков, так и ход битвы: «Святополк же и Владимир и Ростислав, построив дружину, пошли вперед. И шел на правой стороне Святополк, на левой Владимир, посередине же был Ростислав. И миновав Треполь, прошли вал. И половцы выступили навстречу, выставив впереди стрелков. Наши же, став между валами, подняли свои стяги, и стрелки пошли из-за вала. И половцы, приблизившись к валу, подняли стяги свои и налегли сперва на Святополка и взломали полк его. Святополк же держался крепко, а люди его побежали, не выдержав натиска воинов, после чего побежал и Святополк. Потом половцы наступили на Владимира, и была брань лютая; побежали и Владимир с Ростиславом, и воины его» (4, 212). За некоторым исключением, данная информация совпадает с рассказом Яна Длугоша: «Они выводят войска в поле против врага и, сделав первую остановку у Котрополья, приходят к реке Стугне, где осведомляются о настроении воинов, хотят ли те сражаться. И поскольку мнения разошлись, князь Владимир советовал, перейдя реку, вступить с врагом в переговоры о мире. Хотя многие одобряли это, речь не понравилась киевлянам, которые отказались заключать какой – либо мир с половцами. Все согласились с таким решением, [и] перейдя реку Стугну, которая тогда была переполнена водами, они направляют выстроенные полки на врага. Ростислав держал левое, Святополк правое крыло, а Владимир – центр, и двадцать шестого мая они начинают битву. Половцы, выслав вперед лучников, нападают на русские войска, расположенные между двумя рвами. Первым делом они поражают Святполка и его войско на правом крыле, и после того как воины Святополка обратились в бегство, за бегущими последовал и сам Святополк. Затем половцы обрушиваются на Владимира и Ростислава и поражают их, и Владимир и Ростислав бегут с оставшимися воинами, и Ростислав попадает в опасность на реке Стугне, когда волны стали захлестывать его. Брат его Владимир, пытаясь помочь ему, едва сам не захлебнулся в воде. После того как Ростислав и многие воины утонули, Владимир с немногими, переплыв реку, стал на другом берегу, оплакивая своего брата Ростислава и воинов, которые погибли вместе с ним в бою и в волнах» (28, 278).