В апреле 1703 г. русское войско под командованием Шереметьева выступило из Шлиссельбурга вниз по правому берегу Невы. Войско шло лесами и 25 апреля вышло к небольшому городку Ниеншанцу, сторожившему устье Невы. Против земляной крепости за Охтою находился посад из 400 деревянных домиков. Петр на лодке ездил осматривать невское устье. Вечером 30 апреля началось бомбардире вание, а утром 1 мая Ниеншанц сдался. 16 мая на острове Янни-Саари (переименованном Петром в Люст-Эиланд — Веселый остров) был заложен город Санкт-Петербург. Первою постройкою его была деревянная крепость с шестью бастионами. В крепости поставили деревянную церковь во имя Петра и Павла, а близ нее, на месте, где стояла рыбачья хижина, деревянный домик для Петра о двух покоях с сенями и кухнею, с холстинными выбеленными обоями, с простой мебелью и кроватью. Определено было место для гостиного двора, пристани, государева дворца, сада и домов знатных вельмож. Строительство этого города, которому суждено было вскоре стать новой столицей России, послужидо поводом к такому отягощению народа, с каким едва ли могли сравниться все другие меры Со всей страны ежегодно сгонялись на болотистые берега Невы десятки тысяч работников, которые умирали здесь без числа от голода и болезней. Рабочая повинность была, по замечанию современников, бездонной бездной, в которой погибло бесчисленное количество народа. Один Петербург и Кронштадт стоили нескольких сотен тысяч человек. На их место вели новых, так что вопреки всему город вырастал со сказочной быстротой. Людям разного звания под угрозой огромных штрафов и отнятия имения было приказано переселяться в Петербург и строить здесь дома.
Война тем временем продолжалась. В марте 1704 г. Петр велел Шереметьеву осадить Дерпт, а Огильви приступить к Нарве. Некоторое время Петр наблюдал за осадными работами под Нарвой, а 2 июля, потеряв терпение изза медлительности Шереметьева, сам приехал под Дерпт и нашел, что осада велась из рук вон плохо. Учинив всем строгий разнос, Петр велел переместить батареи на новое место. 12 июля, в присутствии государя, солдаты прорубили палисад, взяли равелин и пять пушек и, обратя их к городу, разбили ворота.
После десяти часов упорного боя они ворвались в город. 13 июля комендант затрубил к сдаче и был отпущен без знамен и пушек (офицерам Петр велел возвратить шпаги). Царь торжественно въехал в Дерпт и подтвердил его привилегии.
Отпраздновав победу, Петр Чудским озером возвратился под Нарву. К этому времени из Петербурга подвезена уже была осадная артиллерия, и на воинском совете Петр предложил сделать пролом с Ивангородской стороны в бастионе, именуемом Виктория. В тот же час были построены батареи, и 30 июля началась канонада. За девять дней в бастионе был сделан широкий пролом.
Из 70 пушек у шведов осталась всего одна. В этой крайности Петр предложил коменданту Горну сдаться, но тот прислал гордый и обидный отказ. Петр велел прочесть его перед войском. Озлобленные солдаты требовали, чтоб их вели на приступ. Военный совет определил приступу быть. 9 августа начался штурм. Шведы открыли огонь, осыпали русских бревнами, бочками и камнями. Но те, не смущаясь этим, в три четверти часа со всех сторон взошли на стены и погнали шведов до самого Старого города, куда Горн скрылся вместе с остатками гарнизона. Он запер ворота и в знак сдачи повелел ударить в барабаны. Однако солдаты резали на улицах всех, кто им попадался, не слушая начальников. Петр кинулся между ними с обнаженной шпагой и заколол двух ослушников. Потом, сев на коня, обскакал нарвские улицы, грозно повелевая прекратить убийства и грабежи, расставил повсюду караулы и прибыл к ратуше, наполненной трепещущими гражданами. Между ними Петр увидел и Горна, в жару своем он дал ему пощечину и сказал гневно: «Не ты ли всему виной?» Потом, показывая шпагу, обагренную кровью, добавил: «Смотри — эта кровь не шведская, а русская. Я своих заколол, чтобы удержать бешенство, до которого ты довел моих солдат своим упрямством».
В последующие годы война велась не так интенсивно. Карл сумел наконец победить Августа и заставил его отречься от престола. Из Польши военные действия переместились в Белоруссию, а потом на Украину. В июле 1708 г. Карл занял Могилев и засел здесь надолго: он дожидался прихода генерала Левенгаупта из Лифляндии с 16 000 войска, артиллерией и провиантом; дожидался еще вестей об обещанном ему гетманом Мазепой восстании в Малороссии против царя. Вследствие скудости продовольствия шведы очень страдали от голода. Положение мог бы исправить Левенгаупт с его транспортом, но тот продвигался чрезвычайно медленно. В начале августа, так и не дождавшись его, Карл выступил из Могилева и направился на юго-восток. Поход был очень тяжел для голодного войска по опустошенной стране. Солдаты сами должны были снимать с поля колосья и молоть их между камнями. Из-за непрерывных дождей всюду была распутица и грязь.