В 1377 году умер Ольгерд и это породило междоусобицу в Литве. Князь Дмитрий не успел воспользоваться возможностью вернуть часть русских земель, в своё время завоёванных литовцами, так как Мамай вновь стал готовиться к походу на Москву.
В 1380 году он объявил, что идёт истребить государство российское.
Получив это известие, Дмитрий довольно быстро собрал войско и отправился за благословением к игумену Троицкой обители Сергию, уже известному своими добродетелями. Летописи свидетельствуют, что тот предсказал Дмитрию кровопролитие ужасное, но победу:
Летописцы отмечают, что вместе с дружинами полоцкого и брянского князей Андрея и Дмитрия великий князь московский собрал тогда войско невиданное, не менее ста пятидесяти тысяч воинов.
Мамай на Дону ждал Ягайла литовского, но отправил посла к Дмитрию с требованием заплатить дань. Тот согласился платить, но меньше, чем прежде. Мамай это посчитал дерзостью и сражение стало неизбежным.
Дмитрий выступил со своим войском к Дону. Князь рязанский Олег, союзник Мамая, не ожидавший этого, заметался и не противостоял ему.
7 сентября 1380 года войско Дмитрия перешло Дон и встало на берегах Непрядвы. Затем в боевом порядке двинулось вперёд и на поле Куликовом встретилось с неприятелем. Дмитрий сам повёл воинов, и только когда началось общее сражение, занял место, чтобы видна была вся панорама битвы. Сражение шло с переменным успехом и только внезапный и своевременный удар засадного полка князя Владимира Андреевича, внука Калиты, решил итог сражения. Мамай побежал вместе с остатками своего войска.
Князя Дмитрия нашли после сражения контуженным.
Летописцы отмечают, что убито было в этом сражении с обеих сторон до двухсот тысяч. Погибли многие русские князья и инок Пересвет, который по преданию в начале битвы сразился с печенегом-богатырём.
Ягайло, не успевший к битве, узнав об её исходе, повернул обратно.
Князь рязанский Олег бежал в Литву, но потом был прощён Дмитрием Донским и вернулся в Рязань.
Мамай не успел сходить ещё раз на Русь, у него появился соперник – хан Тохтамыш, потомок Чингисхана, который вошёл в союз с эмиром Тамерланом, объявил себя наследником Батыева престола и Мамай был их войском разбит, бежал в Геную и там был убит.
Летом 1381 года Тохтамыш послал к Донскому послов, требуя, чтобы князья прибыли в Орду. Но те не поехали.
На следующий год Тохтамыш пошёл на Русь и опять же рязанский князь Олег предал Донского. Дмитрий начал собирать войско, но на этот раз князья не отликнулись на призыв. А князь нижегородский даже послал к хану двух сыновей с дарами. Донской, так и не собрав войско, с семьёй перебрался в Кострому. Как предполагает Карамзин, в эту пору безначалия Дмитрием был послан в Москву внук Ольгерда Остей. Он восстановил порядок и начал собирать полки.
В конце августа войско хана подошло к Москве, и по команде Тохтамыша начало осаду Кремля. На четвёртый день осады хан изьявил желание вступить в переговоры. Остей с воеводами вышел из Кремля, веря слову его и нижегородских князей, и был убит, а также были убиты его сопровождающие, а воины Тохтамыша ворвались в Кремль.
После этого началось разорение окрестных городов.
Брат Дмитрия князь Владимир Андреевич со своей дружиной возле Волока разбил большой отряд хана, после чего Тохтамыш стал отступать от Москвы, по пути разорив и владения князя рязанского Олега.
Вернувшиеся в Москву Донской и князь Владимир начали восстанавливать нормальную жизнь, отправив войско наказать князя Олега, и рязанские земли теперь уже с их стороны подверглись разграблению.