23 октября 1576 г. в новый поход на Колывань (Ревель) выступила 50-тысячная армия князя Ф. И Мстиславского и Ивана Васильевича Меньшого Шереметева. 23 января 1577 г. русские полки подошли к городу и осадили его. Ревель защищал гарнизон во главе с генералом Г. К. Горном. Шведы основательно подготовились к защите своей основной твердыни. Защитники крепости имели в пять раз больше пушек, чем осаждавшие. В течение шести недель русские обстреливали Ревель, надеясь зажечь его огненными ядрами. Однако горожане применяли успешные меры борьбы против пожаров, создав специальную команду (400 чел.), следившую за полетом и падением русских снарядов. Обнаруженные «огненные ядра» немедленно гасили мокрыми воловьими шкурами. Со своей стороны, ревельская артиллерия отвечала мощным огнем, нанося жестокий урон осаждающим. От пушечного ядра погиб один из главных предводителей русского войска — боярин и воевода И. В. Меньшой Шереметев, обещавший царю взять Ревель или умереть. Русские трижды безуспешно атаковали крепостные укрепления. В ответ ревельский гарнизон делал смелые и частые вылазки, мешая вести серьезные осадные работы и уничтожая небольшие русские отряды. Попытка взорвать городские стены пороховыми минами также потерпела неудачу. Узнав о начале минных работ, осажденные проложили встречные ходы и сумели разрушить русские подземные галереи.
Активная оборона ревельцев, а также холод и болезни привели к значительным потерям в русском войске. Бомбардировки хорошо укрепленной крепости оказались безрезультатны, хотя по Ревелю было выпущено около 4 тыс. обычных и огненных ядер. 13 марта 1577 г. князь Ф. И. Мстиславский был вынужден снять осаду, продолжавшуюся 7 недель. Уходя, русские сожгли свой стан и передали горожанам, что прощаются ненадолго, пообещав вернуться и овладеть Колыванью.
После снятия осады и отступления московского войска, отряды, составленные из воинов ревельского гарнизона и добровольцев из местных жителей, совершили ответное нападение на русские крепости в Эстляндии. Вскоре их отряды были вынуждены поспешно отступить к Ревелю — в Ливонию вступило большое войско под командованием Ивана Грозного. 9 июля 1577 г. он выступил из Пскова «очищати свою отчину Лифлянскую землю». Однако русские войска двинулись не на Ревель, а на польские города Ливонии.
Пользуясь временными затруднениями нового польского короля Стефана Батория, продолжавшего осаждать Гданьск, русское командование начало решительное наступление на территории, расположенные на реке Западная Двина (Даугава). Завоевав их, московский царь и его воеводы намеревались рассечь территорию Ливонии на две части. Успеху этого плана способствовала малочисленность находившихся в этом районе неприятельских войск. Командовавший польско-литовской группировкой в Прибалтике гетман Ходкевич, имел под своим командованием лишь 4 тыс. человек и не мог помешать действиям русской армии и отрядам ливонских союзников Москвы.
Перед началом похода, еще во Пскове Иван Васильевич заключил новое соглашение с Магнусом, по которому под власть «ливонского короля» передавались земли к северу от реки Аа (Говья) и замок Венден (Кесь) к югу от этой реки. Остальные, отвоеванные у Речи Посполитой прибалтийские территории, согласно условиям Псковского договора, переходили под власть русского царя. Несоблюдение этого соглашения привело впоследствии к тяжелым последствиям, окончательно разрушившим хрупкий русско-ливонский союз.
Несмотря на отмеченное выше неравенство сил, польский отряд полковника Матвея Дембинского атаковал шедшие перед московской армией татарские «загоны», но был разбит и отступил к литовской границе.
30-тысячная русская армия и действовавшие отдельно от нее отряды «ливонского короля» Магнуса заняли города Мариенгаузен (Влех), Люцин (Лужа), Резекне (Режица), Лаудон (Левдун городище), Динабург (Невгин), Крейцбург (Круциборх), Зессвеген (Чиствин), Шванебург (Гольбин), Берзон (Борзун), Венден (Кесь) и Кокенгаузен (Куконос), Вольмар (Владимирец Ливонский), Трикатен (Триката) и несколько других небольших замков и отдельных укреплений. Во время похода царь, убежденный в скорой победе, выразил возмущение поступком Магнуса, издавшего воззвание, в котором тот призывал ливонцев изгнать из своих городов польско-литовские гарнизоны и признать его власть. Пользуясь русскими победами, «ливонский король» овладел городами, находившимися за пределами территории, выделенной ему по Псковскому договору, в том числе Вольмаром и Кокенгаузеном, пытался овладеть крепостью Пебалгом (Пиболдою). Иван Грозный жестко пресек своеволие «голдовника». По приказу царя воеводы Петр Иванович Татев и Даниил Борисович Салтыков выступили на Кокенгаузен, Богдан Яковлевич Бельский и Дементий Иванович Черемесинов — на Вольмар. Сам Иван IV находился с войсками, двинувшимися на Венден. Магнус был вызван к царю, не посмел отвергнуть его приказ, явился в русский лагерь, где подвергся кратковременному аресту. Через 5 дней «короля», согласившегося выполнить все требования московского самодержца, отпустили.