Насколько велика была армия Дмитрия? Никоновская летопись называет цифру 400 000 человек, что, конечно же, большое преувеличение. Поскольку для сбора дани и рекрутов для монголов Великое княжество Владимирское было поделено на пятнадцать тем, оно могло предоставить, в лучшем случае, 150 000 воинов814
. Вряд ли более трети от этого числа можно было фактически поставить под ружье в краткие сроки. Кроме того, нужно исключить тех, кто использовался в службах обеспечения и связи, а также назначенных в гарнизон Москвы и некоторых других городов. Отсюда полевая армия Дмитрия Московского не могла составлять больше 30 000 человек. Армия Мамая была примерно такой же величины. Однако конные войска у него превалировали, что, в условиях того времени и местности, являлось преимуществом.К концу июля армия Мамая достигла равнины, расположенной между верхним Доном и его притоком Непрядвой, близ Куликова поля. Там Мамай остановился, чтобы ждать прибытия Ягайло с его литовцами. Тот, однако, опаздывал на встречу. В то время два брата Ягайло, князья Андрей Полоцкий и Дмитрий Брянский, отказавшиеся признать его власть, решили поддержать Дмитрия Московского. Оба со своими частями присоединились к великому князю в Коломне. Там на военном совете в конце августа оба князя настаивали на том, что русская армия должна пересечь Дон и атаковать Мамая до того, как Ягайло соединится с ним (он тогда был уже в 25 верстах). Их знали как умелых военачальников и приняли совет, тем более, что он соответствовал посланию преподобного Сергия, вдохновляющего армию на бой за веру и отечество. Русская армия переправилась через Оку к 1 сентября, а через значительно более мелкий Дон – шесть дней спустя.
Как только русские пересекли Дон, они оказались лицом к лицу с монголами. Кровавая битва на Куликовом Поле произошла 8 сентября815
. Из-за численного преимущества монгольской конницы русские не могли применить обходные маневры. Однако Дмитрий поместил в засаду в близлежащем лесу у Дона сильное подразделение отборных войск под командованием своего отважного и верного двоюродного брата князя Владимира Серпуховского с князем Дмитрием Боброком в качестве советника. Главным воеводой основной армии князь Дмитрий Иванович назначил боярина Михаила Бренока. Сам великий князь выбрал сражение в строю.Согласно летописям, битве предшествовал, по героической традиции рыцарства степной войны, вызов татарского богатыря Темир-мурзы любому русскому, который осмелится сразиться с ним. Вызов принял Пересвет, один из двух монахов, посланных преподобным Сергием816
. Он на полной скорости поскакал на татарина, и они оба погибли от страшного удара при столкновении. Затем по всему фронту началось основное сражение817. Примерно через четыре часа стало ясно, что преимущество на стороне Мамая; русская пехота вся была раздроблена на части, русская конница тоже испытывала затруднения. Под великим князем Дмитрием было убито два коня подряд. Когда монголы готовились нанести последний удар, Дмитрий Боброк сказал князю Владимиру, воеводе засадного отряда, которому давно не терпелось вступить в бой, что момент ударить настал.Неожиданное появление свежих русских войск сразу же изменило положение. Первым отступил Мамай, вся его армия скоро последовала за ним в полном беспорядке. Русские преследовали их несколько верст и захватили лагерь Мамая со всем вооружением и припасами. О дальнейшем преследовании не могло быть и речи из-за огромных потерь и полного изнеможения оставшихся в живых русских. Потери татар были так же велики, как и у русских; каждая рать потеряла около половины своих людей. Когда князь Владимир, возвратившись после преследования отступающих монголов, встал на усеянном телами поле брани для переклички, многие замечательные воеводы не откликнулись. Среди павших были и главный воевода Михаил Бренок, князь Федор Белозерский, другие князья и бояре, а также монах Ослябя. Некоторое время боялись, что и сам великий князь Дмитрий сложил голову в бою. В конце концов его бездыханным нашли под деревом. Все же он оказался жив и даже не очень серьезно ранен, только контужен.
Первой заботой Дмитрия была возможная угроза литовских войск; вскоре, однако, его успокоило известие, что Ягайло со всем войском спешно возвращается домой. Великий князь Олег Рязанский тоже бежал в Литву, а оттуда позже начал переговоры. Дмитрий согласился на его возвращение при условии, что он признает себя вассалом московского князя.