В то же время Стефан Баторий с трудом добился согласия сейма на продолжение войны и организацию нового похода, поэтому начал его лишь в середине 1581 года, двинув свои войска на Псков. Через этот крупнейший город шла основная связь Москвы с ливонскими землями. Взяв Псков, король планировал окончательно отрезать Московское царство от Ливонии и победоносно закончить войну. Псков был очень сильно укреплен. Он стоял на высоком правом берегу реки Великая при впадении в нее реки Пскова и был обнесен 10-километровой каменной стеной, имевшей 37 башен и 48 ворот. Правда, со стороны реки Великая, откуда трудно было ждать нападения неприятеля, стена была деревянная. Под башнями имелись подземные ходы, обеспечивавшие скрытную связь между различными участками обороны. Верхние ярусы башен также были соединены переходами. Высота стен составляла 6,5 м, а толщина — от 4 до 6 м, что делало их неуязвимыми для тогдашней артиллерии. Внутри Больших стен имелся Средний город, также окруженный стенами, в Среднем городе — укрепленный Довмонтов город, а в Довмонтовом городе — каменный Кремль. Над уровнем реки Великая стены Довмонтова города возвышались на 10 м, а Кремль — на 17 м, что делало эти укрепления практически неприступными. В городе имелись значительные запасы продовольствия, оружия и боеприпасов.
Московское войско было рассредоточено по многим пунктам, откуда ожидалось вторжение неприятеля. Сам царь со значительным по численности отрядом остановился в Старице, не рискнув идти навстречу шедшей к Пскову армии Стефана Батория. Но к Пскову был направлен отряд князя Ивана Шуйского, назначенного «большим воеводой». Ему подчинялись семь других воевод. Все жители Пскова и гарнизон были приведены к присяге, что не сдадут город. Общая численность русских войск, оборонявших Псков, достигала 25–30 тысяч человек. По приказу Шуйского окрестности Пскова были опустошены, чтобы неприятель не мог найти там фураж и продовольствие.
18 августа 1581 года армия Стефана Батория (около 50 тыс. чел.) подошла к Пскову на расстояние 2–3 пушечных выстрелов. В течение недели Баторий вел разведку городских укреплений и только 26 августа приказал своей армии подступить к городу. Но солдаты попали под огонь гарнизонных пушек и отступили к реке Череха. Здесь Баторий устроил укрепленный лагерь. Осаждающие стали рыть траншеи и ставить туры, чтобы приблизиться к стенам крепости. В ночь с 4 на 5 сентября они подкатили туры к Покровской и Свиной башням на южном фасе стен и, поставив 20 орудий, с утра 6 сентября начали обстреливать обе башни и 150 метров стены между ними. К вечеру 7 сентября башни были сильно повреждены, а в стене образовался пролом шириной 50 м. Но осажденные успели соорудить против пролома новую деревянную стену.
8 сентября войска Батория пошли на штурм. Им удалось захватить обе поврежденные башни. Однако вскоре выстрелами из большой пушки «Барс», способной посылать ядра на расстояние более 1 км, Свиная башня была разрушена, а затем и вовсе взорвана бочками с порохом. Взрыв послужил сигналом к контратаке, которую возглавил сам Шуйский. Неприятель не смог удержать занятые позиции и отступил.
После неудачного штурма Баторий приказал вести подкопы, чтобы взорвать стены. Два подкопа осажденные уничтожили с помощью минных галерей, а остальные минеры Батория так и не смогли довести дело до конца. 24 октября начался обстрел Пскова из-за реки Великой раскаленными ядрами, что вызывало пожары, но защитники города быстро справлялись с огнем. Через четыре дня польско-литовский отряд с ломами и кирками подошел к стене со стороны реки Великой между угловой башней и Покровскими воротами и разрушил подошву стены. Она обрушилась, однако оказалось, что за этой стеной есть еще одна стена и ров, преодолеть которые наступающие не смогли. Осажденные бросали им на головы камни и горшки с порохом, лили кипяток и смолу.
2 ноября армия Батория предприняла последний штурм Пскова. На этот раз была атакована западная стена, до этого в течение пяти дней подвергавшаяся мощному артиллерийскому обстрелу и разрушенная в нескольких местах. Однако защитники Пскова встретили противника сильным огнем, и он повернул обратно, так и не дойдя до проломов. 6 ноября Баторий убрал орудия с батарей, прекратил осадные работы и стал готовиться к зимовке. Одновременно он послал отряды немцев и венгров захватить Псково-Печерский монастырь в 60 км от Пскова, однако гарнизон из 300 стрельцов при поддержке монахов успешно отбил два приступа, и неприятель вынужден был отступить.