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