Кроме того, Пётр I принимал меры по срочному восстановлению и строительству укреплений у Архангельска, Пскова, Новгорода и Москвы. Однако, вопреки ожиданиям, Карл XII принял решение о вторжении в Саксонию и Польшу. На шведском военном совете часть генералов высказалась за наступление на Москву, но Карл XII посчитал, что русская армия слишком слабая, чтобы в ближайшие годы угрожать шведам на севере. Это решение дало Петру возможность восстановить силы после поражения под Нарвой и возобновить наступательные действия на севере.
В 1702 году русские войска штурмом овладели крепостью Нотебург (Орешек) в устье Невы. С учётом ключевой роли в выходе на Балтику Пётр переименовал эту крепость в Шлиссельбург («город-ключ»). Весной в 1703 году на Неве был заложен город Санкт-Петербург. Началось строительство русского Балтийского флота.
В результате проведенных реформ Россия значительно увеличила свой военный потенциал. Карл XII, выведя Польшу из войны, стал готовить вторжение на территорию России. Летом 1708 года он выступил из Польши в сторону Смоленска.
28 сентября 1708 года русские войска, возглавляемые Петром, вступили в сражение со шведами у деревни Лесной, в ходе которого был разбит корпус генерала Левенгаупта и захвачен шведский обоз, двигавшийся на помощь Карлу XII из Риги. Пётр I назвал эту победу «матерью Полтавской победы», поскольку шведская армия осталась без резервов, боеприпасов, что значительно ослабило её силы.
Карл XII был вынужден отказаться от похода на Москву, и выступил на Украину, где рассчитывал на поддержку гетмана Мазепы8, предавшего Петра, а также на помощь крымского хана и турецкого султана. Однако эти расчёты не оправдались. Запорожские казаки в большинстве своём не поддержали Мазепу. К шведской армии присоединилось примерно от 4 до 7 тысяч казаков, в то время как 40-тысячная украинская армия влилась в войско Петра.
Царь Пётр, узнав об измене Мазепы, приказал светлейшему князя Александру Даниловичу Меншикову захватить город Батурин – ставку гетмана Мазепы. И 6 ноября 1708 года Батурин был взят, заготовленные там для шведов запасы продовольствия, оружия и боеприпасов были уничтожены. Кроме того, Меншиков вывез всю артиллерию, примерно до 300 орудий. Другой крупной базой Мазепы – Белой Церковью овладел генерал Д. М. Голицын, в результате чего стало невозможным прибытие подкреплений для Карла XII из Польши. Это были удары, которые имели серьёзные последствия, поскольку Карл XII не получил необходимых ему боеприпасов и продовольствия.
Кроме того, Пётр I амнистировал и отозвал из ссылки украинского полковника Семёна Палия, который был возвращён на родину и назначен полковником Белоцерковского полка, а затем участвовал в Полтавской битве.
6 (17) ноября в Глухове был избран новый гетман – по настоянию Петра I им стал Иван Скоропадский9.
Украинское войско, восстановленное после измены Мазепы, во главе со Скоропадским и Палием уже в конце 1708 года действовало против шведов на Левобережной Украине. Чтобы изолировать армию Карла XII от Польши, Пётр I ещё в декабре 1707 года направил за Днепр к польской границе полки генерала Гольца, а в Литву, на усиление войск сторонника польского короля и своего союзника гетмана Синявского, – 7 драгунских полков.
Стоит также отметить, что переход Мазепы на сторону Швеции стал основной причиной последующего расформирования Войска Запорожского и упразднения институтов Гетманщины в 1764 году, а в 1782 году – следов её территориально-административного устройства.
Острый недостаток продовольствия и фуража заставил Карла XII весной 1709 года двинуться в неразорённую войной – Полтавщину. В апреле шведская армия сосредоточилась в районе Полтавы. Попытки взять город были отражены героическим сопротивлением гарнизона крепости, численностью около 4 тысяч человек при 29 орудий под командованием коменданта – полковника А. С. Келина. С апреля по июнь 1709 года шведы предприняли 20 штурмов Полтавы и потеряли под её стенами около 6 тысяч человек.
Одновременно русские войска и казаки полковника Галагана заняли Запорожскую Сечь и уничтожили там запасы, приготовленные сторонником Мазепы кошевым атаманом Гордиенко, который привёл под Полтаву к шведам обманутых им запорожцев, большинство которых вскоре разбежалось. Полки гетмана Скоропадского заняли переправы на реках Псёл и Хорол и уничтожили переправочные средства, отрезав шведам пути отступления за Днепр. Тем не менее, в апреле 1709 года Карл XII отверг предложение Петра I заключить мир с уступкой России Петербурга и Нарвы.
Вскоре против шведов выступила 40-тысячная русская армия во главе с прославленными полководцами Б. П. Шереметевым, А. Д. Меншиковым и Н. П. Репниным. При этом общее руководство войсками осуществлял сам Пётр.
Ранним утром, примерно в 3 часа, 27 июня (8 июля) шведская пехота двинулась вперёд на русские редуты. А шведская кавалерия, проскакав между ними, атаковала русскую кавалерию, стоявшую лагерем на поле за редутами. Шведам удалось быстро захватить два первых недостроенных редута. При этом пленных шведы не брали. Однако третий редут взять с ходу не удалось. Тем временем русские драгуны, выстроившись в боевой порядок, под командованием А. Д. Меншикова двинулись навстречу шведам. Русская конница несколько раз отбила атаки шведской кавалерии, которая потеряла к концу боя 14 знамён и штандартов. Тогда Карл XII приказал шведской пехоте двинуться на помощь кавалерии сквозь линию редутов.
Примерно в 4 часа утра Пётр I приказал своей кавалерии отойти на главную позицию возле укреплённого лагеря. Однако Меншиков не подчинился приказу царя и, желая покончить со шведами у редутов, продолжил бой. В какой-то момент сложилось впечатление, что русская кавалерия отступает, и шведы попытались организовать её преследование. Однако шведский фельдмаршал Карл Реншёльд вернул свою кавалерию назад, боясь оставить пехоту на поле боя без прикрытия. Затем Реншёльд, стремясь обойти русские редуты слева, произвёл перегруппировку войск. При этом шесть правофланговых батальонов и несколько эскадронов генералов Шлиппенбаха и Росса оторвались от главных сил шведов, отошли в лес севернее Полтавы, где были разгромлены кавалерией Меншикова.
Далее, шведская пехота, состоящая из 10 батальонов, пройдя линию редутов, оказалась прямо перед русским укреплённым лагерем, при этом шведы понесли большие потери от огня русской артиллерии. Шведский генерал Левенгаупт уже собирался начать атаку, но был остановлен приказом отойти к Будищенскому лесу и ожидать возвращения кавалерии и отставшей пехоты. В это время ядро из русского ретраншемента10 разбило носилки Карла XII, но сам король не пострадал.
Около шести часов утра Пётр вывел всю армию из лагеря и построил её в две линии, имея в центре пехоту под командованием генерал-фельдмаршала Шереметева и генерала Репнина, на левом фланге кавалерию Меншикова, кавалерией правого фланга командовал Р. Х. Баур, а до его прибытия кавалерией командовал бригадир И. Б. Вейсбах. Русской артиллерией командовал генерал-поручик Я. В. Брюс. В лагере был оставлен резерв из девяти пехотных батальонов (генерал-майор И. Я. Гинтер).
В 9 часов утра шведская пехота атаковала русскую. При этом шведы были встречены сначала артиллерийским огнём, затем противники обменялись ружейным огнём, после чего началась рукопашная схватка. Шведская кавалерия Крейца поддержала атаку своей пехоты. Но кавалерия Меншикова атаковала шведов во фланг и расстроила их атаку.
Правое крыло шведской пехоты яростно атаковало левый фланг русской армии. Под натиском шведов первая линия русских войск стала отступать. Напору противника поддались Казанский, Псковский, Сибирский, Московский, а также Бутырский и Новгородский полки левого фланга дивизии Репнина. В передней линии русской пехоты образовался опасный разрыв боевого порядка: шведы штыковой атакой «опрокинули» 1-й батальон Новгородского полка, захватили свыше десятка русских орудий и некоторые из них обратили против русских. Российская историография описывает подвиг царя Петра, который вовремя заметил это, взял 2-й батальон Новгородского полка и во главе его бросился в самое опасное место. Прибытие царя положило конец успехам шведов, и порядок на левом фланге был восстановлен.
Пока правый фланг шведской пехоты прорывал фронт русской армии, её левый фланг даже не вступил в соприкосновение с русскими. Напротив, русская пехота правого фланга генерал-лейтенанта Голицына атаковала шведскую пехоту и обратила её в бегство.
В результате разгрома пехоты левого фланга был обнажён центр боевых порядков шведской армии. Под натиском русских сил потерявшие строй шведы начали беспорядочное отступление, превратившееся к 11 часам в настоящее бегство.