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