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

Усмирение Тверского князя сильно раздражило Мамая. Он увидел в этом явное пренебрежение его властью. Последний ярлык, данный Михаилу, был поставлен русскими ни во что. С этого времени между Москвой и Ордой началась открытая вражда, но дело долго не доходило до решительного столкновения. В 1377 г. татарский царевич Арапша из Мамаевой Орды сделал нападение на Нижегородскую область. Соединенная суздальская и московская рать по собственной оплошности была разбита на реке Пьяне, а Нижний был взят и разорен. В следующем 1378 г. татары опять сожгли Нижний Новгород. Отсюда Мамай отправил князя Бегича с большим войском на Москву. Но Дмитрий узнал о приближении неприятеля, собрал полки и выступил за Оку в Рязанскую землю, где встретился с Бегичем на берегу реки Вожи. 11 августа к вечеру татары переправились через эту реку и с криком помчались на русских, которые храбро их встретили. С одной стороны ударил на них князь Пронский Даниил, с другой – московский окольничий Тимофей, а сам Дмитрий ударил на них в лице. Татары не выдержали, побросали копья и бросились бежать за реку, причем множество их перетонуло и было перебито.

Известно, что Вожское поражение привело Мамая в неописуемую ярость, и он поклялся не успокаиваться до тех пор, пока не отомстит Дмитрию. Но, понимая, что для покорения Руси нужно повторить Батыево нашествие, Мамай начал тщательно готовить новый поход. Кроме множества татар, которые уже собрались под его знамена, он нанял генуэзцев, черкес, ясов и другие народы. Летом 1380 г. Мамай перенес свой стан за Волгу и стал кочевать в устье Воронежа. Ягайло, князь Литовский, вступил с ним в союз и обещал соединиться с татарами 1 сентября. Узнавши об этом, Дмитрий стал немедленно собирать войска, послал за помощью к подручным князьям: Ростовским, Ярославским, Белозерским. Из всех русских князей не соединился с ним один Олег Рязанский, который из страха за свою область поспешил вступить в союз с Мамаем.

Дмитрий назначил своим полкам собираться в Коломну к 15 августа, а вперед в степь отправил сторожей, чтоб они извещали его о движении Мамая. Перед выступлением из Москвы он ездил в Троицкий монастырь к Сергию Радонежскому, который благословил Дмитрия на войну, обещая победу, хотя и с сильным кровопролитием. От Сергия Дмитрий поехал в Коломну, где собралась уже невиданная на Руси рать – 150 000 человек. 20 августа он выступил из Коломны и, пройдя границы своего княжества, стал на Оке при устье Лопастны, осведомляясь о неприятельских движениях. Здесь с ним соединился двоюродный брат Владимир Андреевич Серпуховской, подошли последние московские полки. Тогда, видя все силы в сборе, Дмитрий велел переправляться через Оку. 6 сентября войско достигло Дона. Устроив полки, начали думать. Одни говорили: «Ступай, князь, за Дон!» Другие возражали: «Не ходи, потому что врагов много, не одни татары, но и литва, и рязанцы». Дмитрий принял первое мнение и велел мостить мосты и искать броды. В ночь на 7 сентября войско начало переправляться за Дон. Утром 8 сентября на солнечном восходе был густой туман, и когда в третьем часу просветлело, то русские полки строились уже за Доном, при устье Непрядвы. Часу в двенадцатом стали показываться татары; они спускались с холма на широкое Куликово поле. Русские также сошли с холма, и сторожевые полки начали битву. Сам Дмитрий с дружиной выехал вперед и, побившись немного, вернулся к основным силам. В «Повести о Мамаевом побоище», источнике сложном и противоречивом, в котором много явных вымыслов и нелепиц, есть рассказ, что Дмитрий надел княжескую мантию на своего любимца Михаила Бренка, сам же в одежде простого воина замешался в толпе, так как хотел биться с татарами «зауряд с дружиной». В первом часу началась решительная битва, какой никогда не бывало прежде на Руси: говорят, что кровь лилась, как вода, на пространстве десяти верст, лошади не могли ступать по трупам, ратники гибли под конскими копытами, задыхались от тесноты. Пешая русская рать уже лежала как скошенное сено, но исход боя решил Владимир Андреевич, ударивший из засады с конным полком в тыл татарам. Кочевники не выдержали атаки и обратились в бегство.

Возвратившись с погони, Владимир Андреевич стал на костях и велел трубить в трубы, все оставшиеся в живых ратники собрались на эти звуки, не было только Дмитрия. Владимир стал расспрашивать: не видал ли кто его? Одни говорили, что видели его жестоко раненным, и потому должно искать его между трупами; другие, что видели, как он отбивался от четырех татар и бежал, но не знают, что после с ним случилось; один объявил, что видел, как великий князь, раненный, пешком возвращался с боя. Владимир Андреевич стал со слезами упрашивать, чтоб все искали великого князя, обещал богатые награды тому, кто его найдет. Войско рассеялось по полю; нашли любимца Дмитриева Михаила Бренка, наконец двое ратников, уклонившись в сторону, обнаружили великого князя, едва дышащего, под ветвями недавно срубленного дерева. Дмитрий с трудом пришел в себя, с трудом распознал, кто с ним говорит и о чем, панцирь его был весь избит, но на теле не было ни одной серьезной раны.

По случаю победы, говорит летописец, была на Руси радость великая, но была и печаль большая по убитым на Дону; оскудела совершенно вся земля русская воеводами, и слугами, и всяким воинством, и от этого был страх большой по всей земле Русской. Это оскудение дало татарам еще кратковременное торжество над куликовскими победителями. Мамай, возвратившись в Орду, собрал опять большое войско, с тем чтоб идти на Московского князя, но был остановлен другим врагом: на него напал заяицкий хан Тохтамыш, потомок Чингисхана. На берегах Калки Мамай был разбит, бежал в Крым и там погиб. Тохтамыш, овладевши Золотой Ордой, отправил к Московскому и другим князьям русским послов известить их о своем воцарении. Князья приняли послов с честью и отправили своих послов в Орду с дарами для нового хана. В 1381 г. Тохтамыш отослал к Дмитрию посла Ахкозю, который назывался в летописях царевичем, с семьюстами татарами; но Ахкозя, доехавши до Нижнего Новгорода, возвратился назад, не смея ехать в Москву; он послал было туда несколько человек из своих татар, но и те не осмелились въехать в Москву. Тохтамыш решился разогнать этот страх, который напал на татар после Куликовской битвы. В 1382 г. он внезапно с большим войском переправился через Волгу и пошел к Москве, наблюдая большую осторожность, чтоб в русской земле не узнали о его походе.

Когда весть о татарском нашествии все же дошла до Дмитрия, он хотел было выйти к ним навстречу, но область его, страшно оскудевшая народом после Куликовского побоища, не могла выставить вдруг достаточного числа войска, и Дмитрий уехал сперва в Переславль, а потом в Кострому собирать полки. Сюда к нему пришло известие, что Москва взята и сожжена татарами. Впрочем, Тохтамыш не чувствовал себя уверенно и после этого. Узнав, что Дмитрий собирает полки в Костроме, а Владимир Серпуховской стоит с большой силой у Волока, он поспешно ушел обратно в степь. Дмитрий вернулся в разоренный город и за свой счет похоронил всех убитых – 24 000 человек.