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