По решению Киевского съезда весною 1224 года князья собрали свои полки и сошлись к Зарубу у Днепра. Татары, услыхавши об этом, прислали своих послов, убеждая русских князей не заступаться за половцев; послы говорили: «Мы вашей земли не занимали, зачем же вы хотите воевать с нами из-за наших холопей – половцев»; но князья убили татарских послов и спустились ниже по Днепру к Олешью. Здесь явилось новое посольство от татар, но и оно не имело успеха: русские послов отпустили, но не отложили похода. У Олешья пришли к русским и соединились с ними вся половецкая земля и все их князья, отсюда Мстислав Галицкий с отрядом в 1000 человек перебрался через Днепр и, разбив передовых татарских сторожей, возвратился назад. Узнавши об успешном набеге Мстислава, все русские князья с своими полками перебрались через Днепр; здесь с князьями были и киевляне, и черниговцы, и смольняне, и галичане, и волынцы, и куряне, и трубчане, и путивльцы; одних выгонцев галицких с своими воеводами Юрьем Домомеричем и Держикраем Володиславичем пришло по Днепру вверх от моря 1000 лодий, не поспели только ростовцы с своим князем Васильком. Перебравшись через Днепр, русские вступили в половецкие степи и при первой же встрече разбили передовой отряд татар, потом 8 дней шли степями до реки Калки; здесь также разбили передовой отряд татар и, не переходя Калки, остановились станом. Мстислав Галицкий приказал Даниилу Волынскому с частью русских полков и с половцами перебраться через реку, а потом и сам отправился за ним с своими полками, не уведомив юрьевского и черниговского князей, с которыми поссорился. Битву начал Даниил Волынский, уехавший далеко вперед, и начало битвы было довольно счастливо; Даниил, Мстислав Немой Пересопницкий и Олег Курский, куда ни являлись, везде поражали татар; но когда воевода Ярун с половецкими полками вступил в бой, то половцы не выдержали татарского натиска, побежали и смяли станы русских князей, еще не приготовившихся к битве, и началась страшная безобразная сеча, кончившаяся таким сильным поражением русских, какого с ними никогда не случалось; в битве пали шесть князей и 70 богатырей, и из всего войска едва десятый успел спастись за Днепр, до которого гнались за ними татары. Между тем Мстислав Романович Киевский, стоявший с своим полком в укрепленном лагере, на высокой неприступной горе, не двинулся от Калки ни на помощь бегущим, ни затем, чтобы самому спастись бегством. Татары, преследуя бегущих, отрядили двух воевод с полками против Мстиславова лагеря; сии воеводы три дни выбивали Мстислава из стана и не могли выбить; наконец они прибегли к хитрости: предложили Мстиславу мир через воеводу бродников Плоскиню, который целовал Мстиславу крест, что татары его отпустят на выкуп. Мстислав поверил крестному целованию и сдался с двумя бывшими при нем князьями и киевским полком; татары сперва иссекли полк, а потом связанных князей задавили под досками и сели обедать на их трупах. Так кончилась страшная Калкская битва. Татары преследовали русских до Новогородка, избивая жителей сел и городов, лежащих по дороге; все уже Приднепровье было в ужасе и ждало своей гибели, как вдруг татары поворотили назад в степи. Русские люди в радости и недоумении говорили тогда: «Не ведаем, эти злые татары откуда пришли на нас и куда делись, только Бог весть».
По удалении татар на место убитого на Калке Мстислава Романовича занял Киев его двоюродный брат Владимир Рюрикович Смоленский, а в Смоленске сел другой их двоюродный брат – Мстислав Давыдович; Чернигов на место убитого на Калке Мстислава Святославича занял Олег Курский (внук известного Игоря Святославича), тот самый, который вместе с Даниилом так храбро сражался в Калкском бою; в Галиче по-прежнему остался Мстислав Удалый, а во Владимире-Волынском – Даниил Романовича. И вскоре во всех сих княжествах начались междоусобия.