Долгорукий в окружении союзников подъехал к самому берегу и картинно взмахнул булавой. Запели боевые трубы, гребцы налегли на весла, и десятки ладей и насадов двинулись через Днепр. От противоположного берега им наперехват пошли суда Изяслава. На середине реки две флотилии встретились. И здесь сразу стало ясно, что на воде воины Изяслава имеют подавляющее преимущество. В сражении на Днепре он применил две новинки. Во-первых, на каждой ладье было по два рулевых весла, на носу и корме, что позволяло свободно маневрировать, не разворачивая судно. А во-вторых, гребцы были защищены настилом из досок, на котором стояли воины младшей дружины, в доспехах и с луками.
Суздальские лучники выпустили во врага тучу стрел, но урона никакого не нанесли, поскольку им было видно только весла, а не самих гребцов. Зато лучники Изяслава прицельной стрельбой перебили множество воинов Юрия, сидевших на веслах. Остальные гребцы сбились с ритма, многие суда замедлили ход или вовсе остановились. Сидевшие в ладьях ратники ринулись к бортам, прикрывая щитами гребцов, но стрелки Изяслава стали стрелять навесом, и потери среди ростовцев и суздальцев продолжили расти.
Киевские кормчие, используя своё техническое преимущество, искусно маневрировали, атакуя вражеские насады с разных сторон, а лучники, благодаря высокой палубе, могли вести прицельный огонь. Суздальцы же просто не успевали разворачивать свои суда и поспевать за подвижным противником. Они несли большие потери, а враг был неуязвим. На некоторых судах стрелки Изяслава раздули жаровни, и вскоре зажжённые стрелы стали впиваться в борта вражеских насадов. Едкий черный дым пополз над водой, несколько ладей Юрия занялись огнем, и ратники, побросав оружие и скинув доспехи, попрыгали в реку. Другие ладьи сошлись борт о борт, и суздальцы полезли на киевские суда, а гридни Изяслава попрыгали во вражеские насады. Стук щитов и звон мечей раскатился вдоль берегов, и воды Днепра окрасились кровью.
Грандиозное сражение на воде развернулось от Киева до устья Десны, тысячи людей с обоих берегов наблюдали за никогда невиданным прежде зрелищем. Одни ладьи кружили в отдалении и осыпали друг друга стрелами. Другие сходились борт о борт, и ратники отчаянно рубились мечами, стараясь захватить неприятельское судно. Третьи просто наблюдали за сражением, а затем устремлялись туда, где враг начинал одолевать, и вступали в бой. Упорная битва продолжалась до самого вечера, и Юрий, видя, как гибнут его ладьи и что прорваться невозможно, велел своим воеводам отступить. Суздальский князь пребывал в растерянности, он просто не ожидал, что дело может так повернуться.
Зато на противоположном берегу царили совсем иные настроения. Изяслав прекрасно понимал, какую серьёзную неудачу потерпел его дядя. Киевская флотилия надежно контролировала реку, а суда Долгорукого прижались к левому берегу. Однако Юрий нашел, чем ответить. Мы не знаем, сам ли он до этого додумался, но решение проблемы было найдено оригинальное. На военном совете было решено форсировать Днепр в районе Витичевского брода. Для этого нужно было, чтобы ладьи прошли мимо Киева и спустились вниз по Днепру. Однако была большая вероятность того, что Изяслав не позволит этого сделать и снова атакует суда Юрия, когда те будут проходить мимо столицы. А чем закончится сражение на воде в этот раз, предсказать было нетрудно.
Поэтому было решено по одному из рукавов Днепра ввести ладьи в Дулебское озеро, а уже оттуда тащить их волоком до речки Золочи. Затем по ней спуститься вниз по течению и снова войти в Днепр. Смысл маневра был в том, что это самое озеро располагалось на левом берегу напротив Киева. Там же протекала и Золоча. И теперь Изяслав при всем желании не мог помешать Юрию, поскольку все его технические нововведения здесь были бесполезны.
Маневр блестяще удался, рать и флот Долгорукого благополучно миновали опасное место на Днепре у Киева. После этого, ладьи Юрия плыли близко от берега, а конные гридни и половецкая орда шли лугом. Точно таким же порядком на противоположной стороне Днепра двигалось воинство Изяслава. Противники остановились около Витичевского брода. Здесь Юрий снова предпринял ряд попыток форсировать Днепр, но опять потерпел неудачу. В развернувшихся ожесточённых сражениях преимущество на воде по-прежнему оставалось за Изяславом, его суда вновь отогнали ладьи и насады Долгорукого к левому берегу. В этой критической ситуации суздальский князь в очередной раз собрал военный совет.