В 1377 году Дмитрий получил от Дмитрия Константиновича известие, что ордынский царевич Арапша (Араб-шах) продвигается к Нижнему Новгороду. Московский князь выступил в поход, но, поскольку об Арапше ничего не было слышно, оставил войско в Нижнем, а сам вернулся в Москву. Русские отряды переправились за реку Пьяну (левый приток Суры) и вели себя крайне беспечно. Не ожидая скорого подхода противника, русские воины скинули доспехи, оружие было в беспорядке, часто ратники даже напивались и хвастались, что каждый может одолеть чуть ли не сотню татар. Но на деле все, конечно, случилось иначе. 2 августа Арапша внезапно с тыла атаковал русские полки. Началась паника, воины бросились к реке, многие были порублены татарами, а многие и утонули. Среди погибших оказался и сын Дмитрия Константиновича — Иван, утонувший при переправе через реку. Затем ордынцы подошли к Нижнему Новгороду. Оставшийся без войск Дмитрий Константинович бежал в Суздаль, а нижегородцы в лодках уплыли в соседний Городец. Нижний был сожжен, а его окрестности опустошены.
В том же 1377 году в Литве умер Ольгерд, и князем стал его сын Ягайло. Один из старших сыновей Ольгерда — князь полоцкий Андрей уехал на службу к Дмитрию. В Москве же скончался митрополит Алексей, один из самых замечательных русских святых. Он благословил перед смертью Дмитрия, которого всегда опекал и поддерживал.
Орда продолжала свою прежнюю политику. В 1378 году татары вновь подошли к Нижнему Новгороду. Дмитрий Константинович попытался было откупиться, но только начавший отстраиваться город был опять сожжен. На Москву Мамай послал войско под началом мурзы Бегича. Дмитрий Иванович выступил навстречу и встретил врага в Рязанской земле на реке Воже (приток Оки). Несколько дней войска стояли напротив друг друга на обоих берегах. Наконец 11 августа ордынцы переправились через реку и начали сражение. Князь Даниил пронский, окольничий Дмитрия Тимофей и сам Дмитрий Иванович с трех сторон ударили на татар и погнали их к реке. В схватке ордынцы потерпели поражение и побежали. Бегич был убит. Битва на реке Воже была первой крупной победой русского оружия над Ордой. Она стала как бы прелюдией к Куликовскому сражению.
Воспользовавшись смутами в Литве, Дмитрий в 1379 году послал Владимира Андреевича серпуховского, Андрея Ольгердовича и Дмитрия Михайловича Боброка-Волынского в литовские земли. Князья взяли Трубчевск и Стародуб. Трубчевский князь Дмитрий Ольгердович перешел на службу к Дмитрию. Его потомки стали именоваться князьями Трубецкими.
1380 год ознаменовался для Руси нашествием Мамая. Две громадные силы противостояли друг другу. Помимо ордынцев на стороне Мамая в походе участвовали отряды черкесов и осетин, булгары и мордва, наемники-итальянцы, пришедшие из Таны (Азова). Союзником Мамая выступил также литовский князь Ягайло, тайные переговоры велись и с князем Рязани Олегом Ивановичем. Олег оказался между двух огней, его пограничное княжество в большей степени страдало от ордынских набегов. Князь пытался вести двойную игру: одновременно он извещал Дмитрия о действиях противника. Дмитрий Иванович собрал московские, ростовские, ярославские, белозерские, владимирские, костромские, переяславские полки, пришли отряды и из других городов. Разумеется, верным соратником был Владимир Андреевич, присоединились к московскому войску и отряды литовских князей Андрея и Дмитрия Ольгердовичей. Сложно определить численность обеих ратей: у татар была примерно сотня, может быть более, тысяч, войско Дмитрия, вероятно, было несколько меньше.