Началась правильная осада крепости. Русское командование решило захватить два северных бастиона крепости – Викторию и Гонор, которые простреливались как с правого, так и с левого берегов Наровы. Для отвлечения внимания противника была запланирована атака на Иван-город, а также имитация атаки ни южные бастионы Триумф и Фортуна. Первое заложение траншей для атаки на правом берегу реки Наровы последовало в ночь на 13 июня. В 750 метрах от бастиона Гонор был построен редут, от которого повели подступы к крепости и ход сообщения назад. В ночь на 16 и на 17 июня русские отрыли подступы на левом берегу Наровы, где в прошлую осаду была мортирная батарея. Осажденные противодействовали работам вылазками и артиллерийским огнем, но не могли остановить приближения подступов к крепости. 25 июня была начата атака на Иван-город. Апраксин, оставив возле устья один полк, с остальными войсками подступил к Иван-городу.
17 июля к Нарве из Дерпта прибыл Петр, 18 июля прибыла осадная артиллерия. 30 июля был открыт огонь с возведенных осадных батарей: с пушечной – по бастионам Виктория и Гонор, с мортирных – по внутренности атакованного фронта и городу. Непрерывный огонь батарей продолжался до 9 августа. До конца осады всего было выпущено 4556 бомб. 30 же июля из Дерпта прибыли пехотные полки, расположились напротив южных фронтов крепости и повели на них ложную атаку.
2 августа главная атака на левом берегу подступами приблизилась к бастиону Виктория. 6 августа была построена шестая батарея (№ 17) на гребне гласиса, чтобы сбить орудия с двойных фланков бастиона Виктория, защищавших подступ к бастиону Гонор. В этот же день обрушился левый фас бастиона Гонор, образовав пологий и широкий обвал. Фельдмаршал Огильви отправил тогда письмо коменданту Нарвы с предложением сдаться, не дожидаясь приступа.
Канонада, между тем, продолжалась. Русские войска приблизились ко рву. На следующий день, 7 августа, Горн прислал ответ, в котором говорилось, что он без королевского повеления сдать крепость не может. В виду такого ответа в русском лагере собрался военный совет, и решил штурмовать Нарву 9 августа. Командования войсками возлагалось на фельдмаршала Огильви. Он назначил три штурмующие колонны: генералу Шенбеку было приказано ворваться в бастион Виктория, где тоже была брешь; генералу Чемберсу – двинуться на обвал бастиона Гонор; генералу Шарфу – к равелину напротив бастиона Глория. Еще 8 августа штурмовые лестницы были скрытно поднесены в ближайшие подступы. Напротив бастиона Виктория, у самого контрэскарпа поставили четырехпушечную батарею для стрельбы во время штурма. В ночь на 9 августа в подступы ввели назначенных для штурма гренадер.
Штурм крепости начался по сигналу в 2 часа дня 9 августа 1704 года. Шведы упорно оборонялись, защищая вершины обвалов, подрывая мины и скатывая штурмовые бочки. Но это не остановило русских. Уже через 45 минут после начала штурма победители ворвались в Нарву.
Только тогда Горн приказал барабанщиком в знак сдачи ударить в барабаны. Однако рассвирепевшие русские солдаты не обращали на это внимания и кололи барабанщиков. Тогда сам Горн ударил в барабан. Тем не менее, русские продолжали убивать в городе всех, кто попадался под руку, не делая разницы между солдатами и мирными жителями.
Петр приказал навести порядок в городе и, сев на коня, обскакал нарвские улицы. По пути Петр лично заколол двух русских мародеров. Прибыв к ратуше, где собралась знать города, Петр увидел там Горна. Царь подбежал к генералу и влепил ему увесистую плюху. Петр кричал в гневе: «Не ты ли всему виноват? Не имея никакой надежды на помощь, никакого средства к спасению города, не мог ты давно уже выставить белого флага?»
Потом, показывая шпагу, обагренную кровью, Петр продолжал: «Смотри, эта кровь не шведская, а русская. Я своих заколол, чтоб удержать бешенство, до которого ты довел моих солдат своим упрямством».
Затем царь велел посадить Горна в тот самый каземат, где по распоряжению последнего содержались коменданты сдавшихся крепостей (Нотебургской – полковник Густав Вильгельм Шлиппенбах и Ниеншанской – полковник Полев).
16 августа без боя капитулировал гарнизон Иван-города. Неделя, предшествующая сдаче Иван-города, была посвящена выработке условий капитуляции. Комендант гарнизона подполковник Стирнстарль на приказание Горна сдать крепость ответил отказом на том основании, что Горн находится в плену и не волен выражать свои подлинные мысли. «Я считаю за стыд отдать по первому требованию крепость, врученную мне королем», – говорил Стирнстарль. Это была всего лишь бравада, так как лишенный запасов продовольствия гарнизон численностью в 200 человек, конечно же, обрекал себя на полное уничтожение. Офицеры гарнизона оказались благоразумнее коменданта, и все до единого согласились сдаться. Крепость капитулировала на условиях, продиктованных русскими: гарнизону разрешалось удалиться в Ревель и Выборг, но без артиллерии и знамен.