Мамай договорился атаковать Москву вместе с войсками Великого князя Литовского Ягайло, с которым решил встретиться на Оке в сентябре 1380 года. Если бы союзники встретились, существование Московского государства было бы закончено, но этого не произошло. Дорогу литовцам перекрыла рать великого рязанского князя Олега, пошедшего на помощь Москве, несмотря на угрозу уничтожения собственного княжества. Мамаю на Куликовом поле пришлось биться с Москвой один на один.
На войско Золотой Орды из Москвы шли кованные московские полки, дружины и ополчения почти сорока русских городов, ярославцы, владимирцы, ростовчане, белозерцы, тарусские, стародубские, слецкие, моложские, оболенские, новосильские, брянские полки, добровольцы из Суздаля, Новгорода, Пскова, Твери, Смоленска, Литвы и Беларуси. Военные историки оценивают московское войско в пятьдесят тысяч воинов. У Мамая войск было вдвое больше.
Полковое построение русских ратей позволяло маневрировать, создавать эшелонированный в глубину и по фронту боевой порядок, прикрывать друг друга. Впереди на Куликовом поле 8 сентября 1380 года встали сторожевой и передовой полки. По фронту встали большой и полки правой и левой руки. За большим полком расположились резервные дружины. За левым флангом скрытно выстроился засадный полк. О построении войск Мамая ничего не известно, но обычно татары строились в две линии, с авангардом из легкой конницы. В центре находилась пехота, по бокам – левое и правое конные крылья, сзади располагался резерв.
Авангард Мамая атаковал русский сторожевой полк, смял и почти уничтожил его. Боевой порыв Золотой Орды еще уменьшил яростно дравшийся передовой полк. Мамай не мог использовать свое численное преимущество – русские фланги защищались болотистыми оврагами и небольшими речками. Два громадных войска столкнулись по всему фронту. Большой полк и правое крыло русских во главе с белорусско-литовскими князьями Дмитрием и Андреем Ольгердовичами не сдвигались ни на шаг, несмотря на колоссальное давление противника. Мамай бросил все силы на левый фланг русских, за которым находилось большое поле. Он хотел прорваться на него и атаковать русских с тыла. В ожесточенной рубке русские дружины стали медленно подаваться назад, и Мамай усилил натиск. На русском левом фланге сосредоточилась колоссальная масса войск. В строю образовались бреши, закрытые резервным полком и задними шеренгами большого полка. Эмир Золотой Орды бросил на левый фланг русских свой стратегический резерв и прорвал фронт. В образовавшуюся огромную брешь хлынули татарские воины. Прорвавшаяся масса золотоордынских войск подставилась под удар засадного полка и талантливый полководец князь Дмитрий Боброк-Волынский не оставил Мамаю ни одного шанса.