Взятие Галича было весьма трудной задачей. Крепость находилась над городом, на вершине холма, крутой склон которого спускался к Галичскому озеру. Два других склона обрывались глубокими оврагами. Последний, отлогий склон, обращённый к равнине, был укреплён валом и рвом. Здесь находился главный въезд в крепость. Мощная дерево-земляная твердыня была выстроена в Галиче ещё во времена Юрия Звенигородского. Теперь в ней находился сильный гарнизон, командовал которым сам Дмитрий Шемяка.
Войско князя Оболенского появилось под стенами Галича 27 января 1450 года. С большим трудом московские воины вскарабкались по обледенелым скатам холма вверх, к главным воротам крепости. Там их уже ждал Дмитрий Шемяка со своими полками. Галичанин понимал, что затяжная оборона переполненной людьми крепости не сулит ему ничего хорошего. На этом пути его подстерегали многие опасности: голод, болезни, измена собственных приближённых. Шемяку могла спасти только немедленная победа над уставшими с дороги и ещё не освоившимися на местности москвичами. К этому же подталкивал князя и его неистовый бойцовский темперамент.
На другой день на поле перед крепостью произошло решающее сражение. Галичане как могли поддерживали своих воинов со стен. «И начаша прьвое с города пушки пущати, и тюфяки, и пищали и самострелы, но ни во что же се бысть им» (22, 122). Князь Оболенский предусмотрительно поставил московские полки достаточно далеко от стен крепости, чтобы они не пострадали от галичской артиллерии. Всё решалось на поле, в кровавой сумятице рукопашного боя, под серым январским небом...
«И бысть сеча зла и поможе Бог великому князю: многих избиша, а лучших всех изымаша руками, а сам князь (Дмитрий Шемяка. —
Согласно свидетельству В. Н. Татищева, исход боя решила смелая атака московского воеводы князя Дмитрия Ряполовского. Во главе «двора» великого князя он в разгар битвы бросился в центр галицкого войска. Напор «дворян» был столь сильным, что армия Шемяки оказалась рассечённой на две части. Тогда князь Василий Иванович Оболенский во главе пешего полка надавил на левый фланг неприятеля, а татарская конница «царевича» Кайсыма — на правый. Галичане дрогнули. Их смятение усилилось, когда они поняли, что сам Дмитрий Шемяка бежал с поля боя. Москвичам оставалось только докончить дело беспощадным истреблением обратившихся в бегство воинов Шемяки (50, 268-269).
Остатки разбитого галицкого войска укрылись в крепости. Дмитрий Шемяка с небольшим отрядом, как призрак, растаял на лесных просторах Заволжья. Лишь два месяца спустя он вдруг объявился в Новгороде...
(Новгородская летопись сообщает, что Шемяка прибыл в Новгород «месяца априля в 2 день, в среду на Вербьной недели» (27, 192). Однако этот день пасхального цикла указывает не на 1450-й, а на 1449 год. В 1450 году среда Вербной недели приходилась на 25 марта — праздник Благовещения. Очевидно, летописец вычислил дату 2 апреля позднее, при очередной переработке текста, исходя из того, что данное известие с указанием только дня пасхального цикла содержалось в статье 6957 года. Таким образом, Шемяка торжественно въехал в Новгород, где его всё ещё многие считали законным великим князем, на праздник Благовещения — 25 марта 1450 года. Понимая, чем может обернуться для Новгорода дружба с мятежником, архиепископ Евфимий в том же году начал «покрипливати» (укреплять. —
Василий Тёмный получил весть о битве под Галичем, вероятно, уже на другой день. Он велел отслужить благодарственный молебен в монастырском храме во имя Иоанна Предтечи. После этого Слепой приказал отвезти его в Галич. Засевшие в крепости горожане, узнав о прибытии великого князя, сдались. «Он же, град омирив, и наместники своя посажав по всей отчине той, и поиде к Москве» (24, 75).
К Масленице (7 марта) победитель был уже в Москве и до начала Великого поста успел отпраздновать с боярами успешное завершение галичского похода. Несомненно, взятие Галича было решающим успехом Василия II в его последней тяжбе с Дмитрием Шемякой. Теперь окончательная победа Слепого уже мало у кого вызывала сомнения. И эта определённость, разумеется, умножала ряды его сторонников.