8 сентября войска Батория пошли на штурм. Им удалось захватить обе поврежденные башни. Однако вскоре выстрелами из большой пушки «Барс», способной посылать ядра на расстояние более 1 км, Свиная башня была разрушена, а затем и вовсе взорвана бочками с порохом. Взрыв послужил сигналом к контратаке, которую возглавил сам Шуйский. Неприятель не смог удержать занятые позиции и отступил.
После неудачного штурма Баторий приказал вести подкопы, чтобы взорвать стены. Два подкопа осажденные уничтожили с помощью минных галерей, а остальные минеры Батория так и не смогли довести дело до конца. 24 октября начался обстрел Пскова из-за реки Великой раскаленными ядрами, что вызывало пожары, но защитники города быстро справлялись с огнем. Через четыре дня польско-литовский отряд с ломами и кирками подошел к стене со стороны реки Великой между угловой башней и Покровскими воротами и разрушил подошву стены. Она обрушилась, однако оказалось, что за этой стеной есть еще одна стена и ров, преодолеть которые наступающие не смогли. Осажденные бросали им на головы камни и горшки с порохом, лили кипяток и смолу.
2 ноября армия Батория предприняла последний штурм Пскова. На этот раз была атакована западная стена, до этого в течение пяти дней подвергавшаяся мощному артиллерийскому обстрелу и разрушенная в нескольких местах. Однако защитники Пскова встретили противника сильным огнем, и он повернул обратно, так и не дойдя до проломов. 6 ноября Баторий убрал орудия с батарей, прекратил осадные работы и стал готовиться к зимовке. Одновременно он послал отряды немцев и венгров захватить Псково-Печерский монастырь в 60 км от Пскова, однако гарнизон из 300 стрельцов при поддержке монахов успешно отбил два приступа, и неприятель вынужден был отступить.
К тому времени моральный дух армии Батория заметно упал, но и осажденные испытывали немалые трудности. Основные силы царской армии в Старице, Новгороде и Ржеве бездействовали. В Псков попытались прорваться только два отряда стрельцов по 600 человек, но больше половины из них погибло или попало в плен. Убедившись, что Псков ему не взять, Баторий в ноябре передал командование гетману Замойскому, а сам отбыл в Вильню, забрав с собой почти всех наемников. В результате численность польско-литовского войска уменьшилась почти вдвое — до 26 тысяч человек, оно страдало от холодов и болезней, росло число умерших и дезертирство.
В кампаниях 1580–1581 годов Стефан Баторий встретил упорное сопротивление, на которое не рассчитывал. Он отмечал, что царские войска «в защите городов не думают о жизни, хладнокровно становятся на место убитых… и заграждают пролом грудью, днем и ночью сражаясь, едят один хлеб, умирают от голода, но не сдаются». Оборона Пскова выявила и слабую сторону наемной армии, сражающейся за деньги. Встретив стойкий отпор, наемники Батория решили поберечь себя для других войн. Кроме того, содержание наемной армии требовало огромных средств от королевской казны, которая к тому времени была уже пуста. В течение осады псковичи разрушали многие подкопы и совершили 46 смелых вылазок. После Пскова Баторий уже не смог получить кредит под залог своих успехов. Русский царь тоже больше не надеялся на благоприятный исход войны и спешил воспользоваться затруднениями противника, чтобы выйти из схватки с наименьшими потерями. В этих условиях Стефан Баторий согласился на десятилетнее перемирие. Оно было заключено близ Запольского Яма, южнее Пскова, 15 января 1582 года. Польский король отказался от претензий на московские земли, в том числе на Новгород и Смоленск, а Москва уступала Речи Посполитой все ранее завоеванные ливонские земли и Полоцк.
Пока Баторий осаждал Псков, шведы, усилив свою армию шотландскими наемниками, продолжали наступательные действия. В 1581 году они окончательно вытеснили московские войска из Эстонии. Последней пала Нарва, где погибло 7 тысяч ее защитников. Затем шведская армия под командованием генерала Понтуса Делагарди перенесла военные действия на территорию Московского царства и последовательно овладела Ивангородом, Ямом и Копорьем. А вот попытка шведов взять Орешек (ныне Петрокрепость) в сентябре — октябре 1582 года закончилась неудачей. Крепость защищал гарнизон под командованием воевод Ростовского, Судакова и Хвостова. Делагарди хотел взять Орешек с ходу, но защитники крепости отбили приступ. Несмотря на неудачу, шведы не отступили. 8 октября 1582 года, в сильную бурю, они пошли на решительный штурм. Им удалось разбить в одном месте крепостную стену и вломиться внутрь, но здесь они были остановлены смелой контратакой частей гарнизона: Осенний разлив Невы и ее сильное в тот день волнение не позволили Делагарди вовремя прислать подкрепление ворвавшимся в крепость частям. В результате они были перебиты защитниками Орешка и сброшены в бурную Неву. Между тем на помощь Орешку уже спешили из Новгорода московские конные полки под командованием воеводы Шуйского. Узнав об этом, Делагарди снял осаду и отступил. В 1583 году Московское царство заключило со Швецией Плюсское перемирие. У шведов остались не только эстонские земли, но и захваченные русские города: Ивангород, Ям, Копорье и Корела с уездами.
Другими словами, вместо широкого выхода к Балтийскому морю, по итогам Ливонской войны Москва потеряла там даже то, что имела ранее. У нее остался лишь Орешек и узкий выход по Неве к Финскому заливу, судоходство в котором полностью контролировали шведы. Впрочем, и эта узкая горловина вскоре была перерезана. Выход на Балтику для Московского государства захлопнулся более чем на сто лет. Иван Грозный срочно начал искать альтернативу Балтийскому морю для торговли с Европой в устье Северной Двины, в Архангельске, который тогда был совершенно не обустроен. Со временем, однако, Архангельский морской порт сыграл важную роль в торговых сношениях Московского государства с Англией, Нидерландами и Данией, а также способствовал развитию таких городов, как Ярославль, Ростов Великий, Переяславль-Залесский, и других, лежащих на пути из Москвы в Архангельск.