В начале декабря из Москвы прибыла артиллерия. Но огонь открывать Великий Князь не спешил. Ждал он не напрасно. В январе 1480 года из Новгорода вышел крестный ход, который возглавлял святитель Феофил. После окончания крестного хода началось следствие, которое показало, что предаться врагу готовы были около тысячи семейств и сам святитель Феофил. Владыку заточили в Московский Чудов монастырь, а изменников вывезли в Кострому, Дмитров, Нижний Новгород, Суздаль, Владимир и другие города. Следствие выявило изменников и из незнатных людей, а потому около семи тысяч семей было разослано в другие города, подальше от границы, где их поселили «на посадах», за городскими стенами. Одновременно в Новгород были переселены надёжные и верные бояре и работные люди из Москвы.
Весной 1480 года Великий Князь Московский получил известия о том, что хан Ахмат выступил на Москву. И тут Иван III принял неожиданное и дерзкое решение. Он приказал Звенигородскому воеводе князю Ноздреватову и татарскому хану Нордоулату, перешёдшему на сторону Москвы, посадив часть дружины на лодки, а часть на коней, разорить и сжечь Орду-город. Эта задача была выполнена с блеском и в короткие сроки. Одновременно Великий Князь Московский направил посольство в Крым, к хану Менгли-Гирею с предложением союза в войне с ханом Ахматом. Крымского хана он просил встать на пути войска короля Казимира. Менгли-Гирей выступил против польско-литовского короля.
С осени 1479 года шли непрерывные работы по укреплению дальних рубежей по линии Рязань – Коломна – Кашира – Серпухов – Алексин – Таруса – Калуга. Были вырыты глубокие рвы, насыпаны валы и сооружены надолбы. Коломну превратили в настоящую крепость, которую окружал ров глубиной в две сажени, на подступах к городу устроили ходы сообщения, а в лесах – завалы и засеки. Дружины и ополчения заняли оборонительные рубежи, готовясь к отражению врага.
Но разведка ордынцев установила расположение укреплённых рубежей, и хан Ахмат повернул от Дона на Мценск – Одоев – Дмитров, чтобы выйти на берег реки Угры, западного притока Оки и, переправившись там, двинуться на Москву с того направления, с которого его не ждали. Разгадав замысел хана, Иоанн III немедленно перебросил главные силы на угрожаемое направление. На берег Угры были переведены и работные люди, которые приступили к сооружению укреплений. Решено было готовить к обороне и Москву. Из посадов и самого города вывезли женщин, стариков, детей. Посады предполагалось, в случае необходимости, зажечь.
Совершая манёвры с целью обхода главных сил Московского войска, хан Ахмат терял время. Наступил август, а орда ещё не достигла Угры. Это дало возможность построить многокилометровые оборонительные рубежи, не уступавшие тем, что пришлось оставить на линии Рязань – Калуга. В августе Иоанн III снова созвал на совет ближних князей и бояр. Теперь даже те, кто выступал против разрыва отношений с ордой, требовали, чтобы Великий Князь вёл их навстречу врагу. Но Великий Князь не торопился. Он избрал оборонительную тактику, хотя и не раскрывал свой замысел даже ближним князьям и боярам.
Неожиданно прибыли послы от братьев Великого Князя. Братья повинились и просили разрешения встать под знамёна Москвы. Ивану III это было лишним сигналом, что не сложился союз ордынского хана и польско-литовского короля. Иоанн велел передать братьям, чтобы те немедленно вели дружины на соединение с его войском и занимали оборонительные рубежи, которые будут указаны.
Наконец, в сентябре войско хана Ахмата вышло на берег Угры. Хан так и не дождался соединения с Казимиром, которому помешали крымчаки. Не решился король ни в бой с крымчаками вступать, ни обходить их, оставляя в тылу и открывая путь на польско-литовские земли.
Хан, не ведая причин опоздания Казимира, долго ещё надеялся на его прибытие и не спешил начинать форсирование Угры. Иоанн III тоже не хотел начинать сражения. Берёг людей. Он был уверен, что ордынцы уйдут с наступлением холодов. Не подготовлены они к боевым действиям в зимних условиях.
И вот пали на землю ночные заморозки. Хан Ахмат понял, что дальнейшее промедление смерти подобно и бросил войска на штурм укреплений Московского войска. Русские воины ответили артиллерийским и пищальным огнём, обрушили на атакующих стрелы ратников. Штурм продолжался несколько дней, но успеха ордынцам не принёс. Лишь огромный урон средь воинов хана был его результатом. Не добившись успеха, хан отвёл свои войска на две версты от берега Угры. Иоанн Васильевич, видя это, направил посольство с миром, которое объявило: «Не быть Москве под татарами! Пусть он едет в свою Орду с миром, а мы словно с ним и не воевали».