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