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