Утром 8 сентября до 11 часов был густой туман: русские полки находились в готовности к бою и поддерживали между собой связь «трубными гласами». К полудню туман рассеялся и Димитрий «повеле полкам своим втале выступити, и се внезапу сила татарская барзо шеломи грядуща и ту пакы, не поступающе, сташа, ибо несть места им раступитися и тако сташа». Татарское войско развернулось, имея в центре пехоту и на флангах конные части. Пехота была построена в несколько шеренг и воины задних шеренг положили копья на плечи передних. Мамай с тремя князьями находился на Красном Холме, откуда руководил войсками. «И начаша прежде съезжатися сторожевые полки русские и татарские, между которыми завязался бой. Сторожевой полк русских сдерживал татар около часа. Князь Димитрий, видя, что полк этот не может больше сдерживать татар, поехал к главным силам и двинул их вперед. В эта время поиде великая рать Мамаева, вся сила татарская, и отселе пойде князь Димитрий Иванович со всеми князи руссцими, изрядив полки противу поганых, и всеми ратьми своими. И ако соступишаша обе силы великыя на бой, и бысть брань крепка и сечь зла зело…».

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

Русская рать преследовала татар и гоня их до р. Меча, и «княжи полцы гнашася за татары и до станов их и пополниша богатства и имения многи. Князь Ягайло со своимю силою побежа назад с великой скоростью никоим же гоним, не видеща бо тогда великого князя, ни рати его, ни оружия его, то токмо имени его бояхуся и трепещаху». Князь рязанский Олег, тоже воздержавшийся от выступления, узнав о победе русских, «отбежа от града своего Рязани и побежа к Ягайло, князю литовскому и придя на рубеж литовский и ту ста и рече своим боярам: аз хочу зде ждати вести, как князь великий пойдет мою землю и придет в свою отчину, и аз тогда возвращуся во своиси».