В ответ золотоордынская конница во главе с Мамаем обрушилась на соседнее с Москвой Рязанское княжество. Переяславль-Рязанский был разграблен и сожжен, а население угнано в Орду. В конце июля 1380 года полчища Мамая двинулись на Русь. Численность войска Золотой Орды, как считают историки, была между 100 и 200 тысячами человек. Сил у русских князей было вдвое меньше.
Мамай собирался в 20-х числах сентября соединиться с великим князем литовским Ягайлой и совместно идти на Москву. Оставив для защиты стольного града часть сил, Дмитрий повел русское войско к городу-крепости Коломне и на берегах Оки разбил походный лагерь. Высланная далеко вперед конная разведка донесла, что огромное войско Мамая расположилось на реке Мече, правом притоке Дона.
План московского князя был смелым: он задумал разбить Мамая до соединения с Ягайлой и потому направил свои полки на юг. 6 сентября недалеко от места впадения в Дон реки Непрядвы русская «сторожа» разгромила конную разведку хана. На совете русских князей было решено перейти Дон и сразиться с ордынцами в чистом поле. В ночь на 8 сентября русское войско по наведенным мостам и вброд переправилось на правый берег Дона и расположилось выше устья Непрядвы. Преодолев путь в 200 километров от Коломны до Дона, русская рать вышла на Куликово поле.
Князь Дмитрий построил свои войска для битвы: впереди — сторожевой полк, его задачей было не позволить ордынским лучникам засыпать тучей стрел главные силы русских; затем — передовой полк, который должен был принять на себя удар главных сил Мамая. За передовым выстроился большой пеший полк, на флангах — полки правой и левой руки. На тот случай, если враги прорвут строй, в тылу оставили резерв.
В густой дубраве на левом крыле укрылся сильный засадный полк. Им командовали князь Владимир Серпуховской и зять Дмитрия Ивановича воевода Дмитрий Боброк-Волынский. Этому полку предстояло выйти на Куликово поле в решающее мгновение.
Мамай был опытным полководцем и понял, что на Куликовом поле ему не удастся использовать свое преимущество в коннице. Небольшие дубравы и топкие берега речек надежно прикрывали фланги русских сил от обхода. В помощь наемной итальянской пехоте Мамай приказал спешиться части ордынских всадников. На флангах он расположил тяжеловооруженную конницу, за Красным холмом оставил сильный резерв.
Битва началась около 12 часов дня поединком русского инока Пересвета и ордынского богатыря Челубея. Они сошлись на копьях, и оба погибли. Затем легкая конница Мамая атаковала сторожевой конный полк русских. Татарские лучники натолкнулись на яростное сопротивление княжеских дружинников и долго не могли заставить их отойти.
После этого войско Орды пошло в атаку по всей ширине Куликова поля. Сторожевой полк попятился к передовому, но и тот не выдержал натиска неприятеля. Пришел черед вступить в битву пешему большому полку. Ожесточенная сеча шла в течение двух часов, распавшись на отдельные единоборства.
Но Мамай отыскал способ ударить в тыл русским. На левом фланге перед дубравой была довольно широкая лощина, ее ровное дно давало возможность тяжеловооруженным всадникам набрать скорость. Мамай бросил сюда резервную конницу. Она прорвала строй русского полка левой руки и вклинилась между Доном и тылом сражавшегося большого полка. Но всадников Орды остановил русский резерв, незамедлительно вступивший в бой.
Из боевого порядка русской рати под натиском монголо-татар устоял только полк правой руки, который не подался назад ни на шаг. Воеводам даже пришлось сдерживать ратников, чтобы они не шли вперед.
В критический момент из дубравы появился засадный полк русских. Он ударил в тыл и во фланг прорвавшейся к Дону ордынской коннице. Это дало возможность русским князьям и воеводам перестроить полки для продолжения битвы. Примерно через час Мамаево войско было разгромлено. Правитель Золотой Орды бежал в числе первых.
Победа досталась русским дорогой ценой, потери сторон в Куликовской битве были огромными. За победу 8 сентября 1380 года в Донском побоище князь Дмитрий получил прозвище Донской. А его двоюродного брата князя Владимира Серпуховского прозвали Храбрым.
В тот день литовский князь Ягайло находился всего в 30–40 километрах от Куликова поля. Его силы так и не соединились с войсками Мамая. Узнав о разгроме полчищ Золотой Орды, литовцы не стали испытывать судьбу и повернули назад.
В 1382 году хан Тохтамыш, пришедший к власти в Золотой Орде, с большим войском подошел к Москве. Это застало Донского врасплох. Он уехал в Кострому, надеясь собрать там войско. Оборонял Московский Кремль внук литовского князя Ольгерда Остей. Три дня горожане отбивали яростные атаки ордынцев с помощью нового, ранее неизвестного оружия — тюфяков (ружей и небольших пушек). Затем Остей и столичная знать решили откупиться от хана Тохтамыша. 26 августа большая депутация из бояр и духовенства вышла из крепостных ворот. Монголо-татары напали на нее, убили Остея и ворвались в крепость.