Битва началась традиционным поединком. Когда «уже близко сошлись обе силы, выехал из полка татарского богатырь великий, и широту имел великую, и мужество великое, и был всем страшен». Навстречу ему выехал простой ратник Пересвет, «пошел против татарского богатыря Темирь-Мурзы, и ударились крепко, так громко и сильно, что земля затряслась, и упали оба на землю мертвые». Только тогда, около 12 часов дня, «оступились полки».
Условия местности не позволили Орде нанести фланговые удары. Войску Мамая пришлось пойти в лобовую атаку на русский строй. «И была брань крепкая, и сеча злая, и лилась кровь, как вода, и падало мертвых бесчисленное множество от обеих сторон, от татарской и русской. И падало татарское тело на христианское, а христианское тело на татарское, всюду множество мертвых лежало, и не могли кони ступать по мертвым. Не только оружием убивали, но и под конскими ногами умирали, от тесноты великой задыхались, потому что не могло вместиться на поле Куликовом, между Доном и Мечей, такого множества сошедшихся сил».
Главный удар Мамая был направлен на центр русского строя, где стояла «пешая русская великая рать», крестьяне ополченцы и городские полки. Тяжелы были потери пешей рати. По словам летописца, она, «как сено скошенное, лежала». Монголо-татары несколько потеснили «большой полк», но сломить его не сумели. Владимирские и суздальские дружины вместе с московскими ратниками отразили здесь натиск врага. Устоял и полк правой руки. Ордынцы несколько оттеснили русские полки, но решающего успеха не добились.
Тогда Мамай перенес главный удар своего войска на левый фланг русского строя. «И тут пешая рать, как дерево, сломилась, и как сено подсечена, и было видеть это страшно, и начали татары одолевать». Упорно отбиваясь, полк левой руки медленно отходил назад, к Непрядве. Ордынская конница начала охватывать левый фланг «большого полка». Казалось, победа уже склоняется на сторону Мамая.
Но в Зеленой дубраве, потаенно от врага, стоял нерастраченный засадный полк, и «князь Владимир Андреевич с избранным воинством и с мудрым и удалым воеводой Дмитрием Боброком-Волынцем» ждали удобного момента, чтобы нанести рати Мамая смертельный удар. Горячий Владимир Андреевич уже беспокоился, видя отступление полка левой руки: «Чем полезно стояние наше? Кому нам помочь? Уже все мертвые лежат христианские полки!» Но опытный воевода удержал его:
«Беда, княже, велика! Но не время еще нам выйти на супостатов!» Только в три часа дня, когда ветер стал дуть в сторону татар и все ордынское войско ввязалось в сечу, не оставив резервов, воевода сказал князю: «Княже, час пришел!»
Засадный полк вылетел из дубравы и ударил в тыл и фланг ордынцев, ударил с яростью, и от неожиданного удара «пришли в ужас татары, и устрашились, и воскликнули: „Увы нам, увы нам! Христиане перехитрили нас, лучших и удалых князей и воевод спрятали и на нас неутомленными приготовили. Наши же руки ослабли, колени оцепенели, плечи устали, и кони наши утомлены, и оружие наше иступилось. Кто может против них выстоять? Горе нам!“» Та часть ордынского войска, которая оказалась в глубине русского строя, была опрокинута в воды реки Непрядвы. Остальных ордынцев погнали обратно, к Красному холму, месту ставки Мамая. Это было началом общего отступления врага. Все русские полки, ободренные успехом засадного полка, двинулись вперед. «И побежали татарские полки, а христианские полки за ними погнались, били и секли. Увидев, что новые полки неутомленные вышли на татар, побежал Мамай с князьями своими в малой дружине. И многие татары пали от оружия христианского воинства, а другие в реке утонули. И гнали их до реки до Мечи, а княжеские (конные) полки гнались до станов их и захватили имения и богатства их много».
Далее летописец повествовал о поисках после битвы великого князя Дмитрия Ивановича. «Двое из простых воинов, одному имя Федор Зов, а другому имя Федор Холопов, нашли великого князя сильно избитого, едва дышащего, под свежесрубленным деревом, лежавшего, как мертвый, и сошли с коней, поклонились ему, и один быстро возвратился к князю Владимиру Андреевичу, поведал ему, что великий князь жив», но «был доспех его весь избит и изранен». Летописец отметил, что Дмитрий Иванович «прежде всех стал на бой и впереди с татарами много бился», хотя князья и воеводы уговаривали великого князя перед боем: «Княже, не становись впереди биться, но стань сзади, или на крыле, или где-нибудь в другом месте». На это Дмитрий заявил: «Да как я скажу кому-нибудь: „Братья, встанем крепко на врага!“ — а сам встану сзади и лицо свое скрою? Не могу я так сделать, чтобы таиться и скрывать себя, но хочу как словом, так и делом прежде всех начать и прежде всех голову положить, чтобы прочие, видя мое дерзновение, так же сотворили с многим усердием!» Дмитрий Иванович, пояснил летописец, «как сказал, так и сделал, прежде всех начал биться с татарами, да со всех сторон его обступили татары, как вода, и много по голове и по плечам и по животу его били и кололи и секли, но спасся он от смерти, только утомлен был от великой битвы почти до смерти. Был же сам он очень крепкий и мужественный, и телом велик и широк, и плечист, и тяжел собою, бородой же и волосами черен, взором удивителен».