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