Витовт приехал к великому князю в Коломну. Здесь оба правителя по инициативе литовского князя договорились отправить послов новгородцам с требованием расторгнуть мир с немцами. Новгород с его богатством и выгодным торговым положением вообще был лакомым куском для Литвы и давно привлекал к себе взоры литовских завоевателей. Витовт считал Новгород сферой своего влияния и, вероятно, мечтал утвердиться на новгородском княжеском столе. Василий I, выполняя союзнический долг, отправил в Новгород послов. Но новгородцы не захотели отказываться от выгодного торгового соглашения с Любеком, Готландом, Ревелем и Дерптом. Поэтому горожане послали московскому князю такой ответ: «Господин великий князь, у нас с тобой мир, с Витовтом — иной и с немцами — иной». Эти слова побудили Василия к более решительным действиям. В 1397 году он послал своих бояр на Двину в Заволочье, и все жители Подвинья присягнули на верность Москве. Рати великого князя захватили Волок-Ламский, Торжок, Бежецкий Верх и Вологду, входившие в состав земель новгородских.
«Лучше умереть нам за святую Софию, нежели в обиде быть от своего великого князя!» — заявили новгородские воеводы и начали ответные военные действия. Белозерские волости и само Белоозеро были взяты на щит, пограблены и сожжены, белозерские князья с великокняжескими воеводами выплатили новгородцам 60 рублей откупа, но войско «Великого Господина» не остановилось. Забрав громадный полон и много скота, оно опустошило Кубенские волости, вторглось в вологодскую землю, захватило и сожгло Устюг. В Устюге новгородцы стояли четыре недели, отсюда они послали часть полков на юг, которые всего на один день пути не дошли до Галича. По дороге новгородцы все предавали огню и мечу и забрали полон, который, впрочем, отдавали за выкуп, так как суда не могли нести всей тяжести добычи (!). Грабеж продолжался и в других областях. Так, двинцы выплатили Новгороду 2000 рублей и передали 3000 коней, по числу новгородских ратников. Из пленных главного «переметчика» заволоцкого воеводу Ивана Никитина в Новгороде сбросили с моста в Волхов, были казнены и другие воеводы.
Наконец, удовлетворившись местью, Новгород послал своих представителей в Москву для заключения «мира по старине». Василий согласился на это предложение и отправил на княжение туда своего младшего брата Андрея, князя московского. Такая странная уступчивость великого князя, объясняется тем, что он весьма опасался Витовта, который мог попытаться захватить Новгород в любой момент. Поэтому Василию приходилось лавировать между Литвой и Новгородом, дабы сохранить свою власть над северной русской столицей. К тому же в 1398 году Витовт заключил договор с магистром Ливонского Ордена, по которому литовский князь обязывался помогать Ордену в завоевании Пскова, а Орден, в свою очередь, должен был оказывать поддержку Витовту в покорении Новгорода. Витовт не сразу обнаружил свои враждебные замыслы по отношению к Москве, так как некоторое время был занят ордынскими делами, пытаясь возвратить на золотоордынский престол свергнутого Тохтамыша. С помощью последнего литовский правитель самодовольно надеялся и Москву прибрать к своим рукам: «сесть на Москве на великом княжении, на всей Русской Земле». Но коварным замыслам не суждено было осуществиться. План Витовта потерпел полный крах в битве на Ворскле 12 августа 1399 года, когда с помощью Едигея ордынский хан Темир-Кутлук наголову разбил литовцев. Разгромленный литовский князь поспешил заключить мир с Новгородом (1400 г.), а затем и с Псковом (1401 г.).
Теперь Василий Дмитриевич мог не бояться ослабленной Литвы и выступить против Новгорода в полной силе. В Москве был арестован находившийся здесь новгородский епископ, а великокняжеское войско пошло в Двинскую землю, вновь подвергнувшуюся жестокому опустошению. Новгородские воеводы выступили против Москвы и сразились с войсками Василия в битве при Холмогорах, одержав победу. Между тем в Торжок вошла небольшая московская рать (300 человек). Находившиеся в городе новгородские бояре были схвачены и привезены в Москву. В 1402 году Новгород запросил мира, и Василий отпустил заложников. Тогда же московский князь направил в Псков своего наместника. Вероятно, город, заключивший с Витовтом вечный мир, не решился оказать сопротивление великому князю. Власть Москвы над северными русскими областями была восстановлена.
Но, как только начались описанные выше события, напомнил о своем существовании скрывавшийся у казанских татар князь Семён Дмитриевич суздальский. В 1401 году Василий послал своих воевод Ивана Уду и Фёдора Глебовича на поиски мятежного князя. В мордовской земле их отряд обнаружил жену Семёна Александру с детьми. Их схватили и привезли в Москву. Узнав о судьбе своей семьи, Семён «вниде в покорение»: поехал в Москву и заключил с Василием мир, отказавшись от претензий на Нижегородское княжество. Взяв жену и детей, князь отправился в Вятку, где и скончался пять месяцев спустя. Таким образом, Нижний Новгород остался во владениях московского князя.