Передышка длилась недолго. Оправившись после разгрома, Дмитрий Иванович в августе 1370 г. сложил крестное целование Михаилу и начал военные действия против Твери. Московские войска взяли города Зубцов и Микулин, разорили многие тверские волости и захватили большой полон. Не надеясь на свои силы, Михаил бросился к Ольгерду, но помощи не получил, поскольку Литва была занята борьбой с немцами. Тогда тверской князь спешно отправился в Орду, где у хана Магомет-султана выпросил великокняжеский ярлык. На Русь Михаил возвращался уже с ордынским послом. Дмитрий надеялся перехватить тверского князя, но тот, предупреждённый сторонниками, кружным путём направился вновь в Литву. На этот раз его хлопоты увенчались успехом. Осенью новое войско Ольгерда двинулось на Москву. 6 декабря литовцы уже жгли московский посад. Дмитрий, как и в прошлый раз, заперся в городе. Восемь дней длилась осада. Получив известие о сборе Владимиром Андреевичем большого войска, Ольгерд заключил перемирие с московским князем и повернул назад. Михаил Александрович ушёл в Тверь.
В начале 1371 г. Михаил опять поехал в Орду. Там он снова получил великокняжеский ярлык и в апреле направился во Владимир. Однако горожане, присягнувшие Дмитрию, не пустили нового князя. Ордынский посол потребовал от Дмитрия признания великого княжения за Михаилом, но московский князь гордо ответил: «К ярлыку не еду, а в землю на княжение Володимерское не пущу, а тебе, послу, путь чист». Это было уже прямое неповиновение Орде. Но Дмитрий понимал, что открытое выступление против ордынской власти может обернуться трагедией для Москвы. Он вызвал посла к себе и склонил на свою сторону богатыми дарами. В июне 1371 г. московский князь, которого благословил митрополит Алексей, сам поехал к хану. Установился мир и с Литвой. Дочь Ольгерда – Елена стала женой Владимира Андреевича серпуховского. Лишь один Михаил остался в проигрыше: в злобе он разорил Кострому, Углич и другие земли по Волге.
В Орде Дмитрий был принят хорошо. Всеми делами при ордынском дворе заправлял темник Мамай, который возводил на престол своих ставленников. Не будучи сам чингисидом, он не мог стать ханом и поэтому действовал через ханов-марионеток. Дмитрий был отпущен с «большой честью». Ему даже выдали находившегося в Орде сына Михаила тверского – Ивана, который потом был выкуплен из московского плена за 10 000 рублей.
Но борьба Москвы с другими княжествами не утихла. Ещё одним противником Дмитрия стал рязанский князь Олег Иванович. Начало войн с Олегом было положено самим Дмитрием. 14 декабря 1371 г. московский князь послал на Рязань рать под командованием князя Дмитрия Михайловича Боброк-Волынского (этот потомок литовских князей служил Дмитрию Ивановичу). Как отмечает летописец, рязанцы хвастались перед боем: «Не возьмём с собой ни щитов, ни копий, никакого иного оружия, а только верёвки, чтобы вязать пленных москвичей, ибо они трусы». Но в битве при Скорнищеве рязанское войско было наголову разбито, а сам Олег едва спасся бегством.
Между тем Михаил Александрович начал воевать московские волости. В 1373 г. он чуть было не взял Дмитров, а в мае захватил Торжок, входивший во владения Новгорода, поскольку жители Торжка ограбили тверских купцов. Одновременно он опять уговорил Ольгерда начать войну. Литовское войско было встречено московскими полками при Любутске, но до главного сражения дело не дошло. Дмитрий заключил перемирие и с Ольгердом, и с Михаилом. Однако все понимали, что это лишь временная передышка.
В Москве Дмитрий Иванович проводил политику укрепления собственной власти. В городе существовала должность тысяцкого, представлявшего интересы горожан и обладавшего существенной властью. Тысяцкими были представители рода Вельяминовых, потомки ещё ростовского тысяцкого Георгия Симоновича, «пестуна» Юрия Долгорукого. При Дмитрии тысяцким был Василий Васильевич Вельяминов, его сын Микула был женат на дочери князя Дмитрия Константиновича суздальского. 17 сентября 1373 г. Василий Васильевич умер, и Дмитрий упразднил саму должность московского тысяцкого. Вероятно, многие горожане были недовольны этим. Во всяком случае, сын умершего тысяцкого Иван Васильевич в 1375 г. бежал в Тверь к Михаилу вместе с неким Некоматом Сурожанином (очевидно, греческим купцом). Судя по всему, Иван Васильевич считал себя законным претендентом на должность тысяцкого и составлял какой-то заговор против Дмитрия. В 1379 г. он был хитростью пойман в Серпухове и 30 августа публично казнен в Москве, на Кучковом поле. Многие москвичи плакали, уничтожение городского самоуправления не всем пришлось по душе.
Но вернёмся в 1375 год. Некомат отправился из Твери в Орду и 14 июня привез Михаилу ярлык на великое княжение владимирское. В тот же день тверской князь разорвал договорные отношения с Дмитрием. Этот шаг дорого обошелся Михаилу. Дмитрий собрал в Волоке-Ламском огромное войско – настоящую коалицию князей. Здесь были и Дмитрий Константинович нижегородский, и его брат Борис князь городецкий, и Владимир Андреевич серпуховской, а также ростовские, ярославские, белозерские, стародубский, брянский, новосильский, торусский, оболенский и многие другие князья. 29 июля воинство вышло из Волока, и грандиозный поход начался. 5 августа Дмитрий стоял у Твери. Тут к нему присоединились и новгородцы. Месячная осада окончательно подорвала силы Михаила. Он поначалу надеялся на литовскую помощь, но даже Ольгерд не решился воевать против такого большого войска. Когда положение стало полностью безнадежным, ворота Твери открылись, и делегация бояр во главе с епископом Евфимием направилась в ставку московского князя. Михаил просил мира. Договор был заключен, и 3 сентября Дмитрий снял осаду. Это был последний акт длительной борьбы двух княжеств за великое княжение, за лидерство среди русских земель. Тверь оказалась побеждённой.
Следующий период деятельности Дмитрия Ивановича связан с взаимоотношениями с Ордой. Здесь выделяются четыре узловых события, которые, с одной стороны, показали возросшее могущество Московского княжества, а с другой – свидетельствовали о наличии значительного потенциала и у ордынского государства. Русь и Орда впервые встали практически на один уровень. Если раньше силы Орды были несоизмеримо больше русских, то теперь оба государства стали фактически на равных, хотя определенная зависимость от ханов оставалась. Тем не менее именно во время Дмитрия Донского чаши весов качнулись в пользу Москвы и начался процесс падения Орды и окончательного освобождения Руси от позорного ига.
В 1377 г. Дмитрий получил от Дмитрия Константиновича известие, что ордынцы продвигаются к Нижнему Новгороду. Московский князь выступил в поход, но, поскольку о неприятеле ничего не было слышно, оставил войско в Нижнем, а сам вернулся в Москву. Русские отряды переправились за реку Пьяну (левый приток Суры) и вели себя крайне беспечно. Не ожидая скорого подхода противника, русские воины скинули доспехи, оружие было в беспорядке, часто ратники даже напивались и хвастались, что каждый может одолеть чуть ли не сотню татар. Но на деле всё, конечно, случилось иначе. 2 августа ордынцы внезапно с тыла атаковали русские полки. Началась паника, воины бросились к реке, многие были порублены татарами, а многие и утонули. Среди погибших оказался и сын Дмитрия Константиновича – Иван, утонувший при переправе через реку. Затем ордынцы подошли к Нижнему Новгороду. Оставшийся без войск Дмитрий Константинович бежал в Суздаль, а нижегородцы в лодках уплыли в соседний Городец. Нижний был сожжён, а его окрестности опустошены.
В том же 1377 г. в Литве умер Ольгерд, и князем стал его сын Ягайло. Один из старших сыновей Ольгерда – князь полоцкий Андрей уехал на службу к Дмитрию. В Москве же скончался митрополит Алексей, один из самых замечательных русских святых. Он благословил перед смертью Дмитрия, которого всегда опекал и поддерживал.
Орда продолжала свою прежнюю политику. В 1378 г. татары вновь подошли к Нижнему Новгороду. Дмитрий Константинович попытался было откупиться, но только начавший отстраиваться город был опять сожжён. На Москву Мамай послал войско под началом мурзы Бегича. Дмитрий Иванович выступил навстречу и встретил врага в Рязанской земле на реке Воже (приток Оки). Несколько дней войска стояли напротив друг друга на обоих берегах. Наконец 11 августа ордынцы переправились через реку и начали сражение. Князь Даниил пронский, окольничий Дмитрия Тимофей и сам Дмитрий Иванович с трех сторон ударили на татар и погнали их к реке. В схватке ордынцы потерпели поражение и побежали. Бегич был убит. Битва на реке Воже была первой крупной победой русского оружия над Ордой. Она стала как бы прелюдией к Куликовскому сражению.
Воспользовавшись смутами в Литве, Дмитрий в 1379 г. послал Владимира Андреевича серпуховского, Андрея Ольгердовича и Дмитрия Михайловича Боброка-Волынского в литовские земли. Князья взяли Трубчевск и Стародуб. Трубчевский князь Дмитрий Ольгердович перешел на службу к Дмитрию. Его потомки стали именоваться князьями Трубецкими.
1380 год ознаменовался для Руси нашествием Мамая. Две громадные силы противостояли друг другу. Помимо ордынцев на стороне Мамая в походе участвовали отряды черкесов и осетин, булгары и мордва, наемники-итальянцы, пришедшие из Таны (Азова). Союзником Мамая выступил также литовский князь Ягайло, тайные переговоры велись и с князем Рязани Олегом Ивановичем. Олег оказался между двух огней, его пограничное княжество в большей степени страдало от ордынских набегов. Князь пытался вести двойную игру: одновременно он извещал Дмитрия о действиях противника. Дмитрий Иванович собрал московские, ростовские, ярославские, белозерские, владимирские, костромские, переяславские полки, пришли отряды и из других городов. Разумеется, верным соратником был Владимир Андреевич, присоединились к московскому войску и отряды литовских князей Андрея и Дмитрия Ольгердовичей. Сложно определить численность обеих ратей: у татар была примерно сотня, может быть более, тысяч, войско Дмитрия, вероятно, было несколько меньше.