7 июля 1703 г. в кровопролитном сражении у реки Сестра русские войска разбили шведский отряд генерала А. Крониорта, который с большими потерями отошел к Выборгу. В 1704 г. шведы попытались с суши и с моря захватить Петербург, но безуспешно. Летом 1704 г. русские войска взяли Дерпт и Нарву, в 1705 г. — Митаву. Россия получила выход к морю.
В 1704 г. под нажимом шведов с польского престола был низложен Август II. Королем стал шведский ставленник Станислав Лещинский. Сторонники Августа создали Сандомирскую конфедерацию, которую поддержали Саксония и Россия.
В августе 1705 г. главные силы русской армии (35 тыс. человек) были сосредоточены в Гродно, чтобы поддержать войска Августа II (ок 10 тыс. человек). 13 января 1706 г. Карл XII блокировал союзников в Гродно. Август II с кавалерией поспешно ушел в Саксонию, а конница Меншикова отступила к Минску. Русская армия 22 марта 1706 г. вырвалась из Гродно. Совершив обманный маневр, армия направилась не к русской границе, где их ожидал со всеми силами Карл XII, а на юго-запад к Тикотину, Брест-Литовску, а затем к Киеву.
Упустив русскую армию, в августе 1706 г. Карл XII начал вторжение в Саксонию, Август II был вынужден заключить тайный Альтранштедтский мирный договор со Швецией, по которому он отрекся от польской короны и признал новым польским королем Станислава Лещинского. Кроме того, по договору Август II разорвал союз с Россией. С августа 1706 до лета 1709 гг. Россия вела войну со Швецией без союзников. 18 октября 1706 г. в битве при Калише русская кавалерия А.Д. Меншикова разгромила шведский корпус генерала А. Мейерфельдта.
Новый поход Карл XII на Россию начал в январе 1708 г. Шведский король поставил своей целью захватить Псков и Новгород, установить контроль над Литвой и Украиной и расчленить Россию. Шведы заняли Гродно, а в июне разгромили дивизию А.И. Репнина и вошли в Могилев. Но уже 30 августа 1708 г. в бою под с. Добрым русские войска под командованием М.М. Голицына нанесли тяжелое поражение шведскому отряду генерала К. Рооса.
В сентябре 1708 г. Карл XII принял решение начать наступление на Малороссию (Украину). Гетман Малороссии И.С. Мазепа обещал шведскому королю помощь 30-тысячной казацкой армии, а также фуражом и продовольствием. Главные силы шведской армии были сосредоточены в районе Стародуба. Там Карл XII намеревался дождаться, пока из Риги подойдет корпус генерала А. Левенгаупта, сопровождавший большой обоз с боеприпасами и продовольствием, ок. 7 тыс. возов. Но русские войска перехватили шведский корпус и 28 сентября. 1708 г. у деревни Лесная нанесли ему тяжелое поражение. В конце октября стало известно об измене гетмана Мазепы, бежавшего в шведский лагерь. 1 ноября 1708 г. русские войска под командованием А.Д. Меншикова, опередив на один день шведскую армию, штурмом овладели гетманским замком Батурин, где были сосредоточены большие запасы продовольствия и военного снаряжения. Новым гетманом был избран И.И. Скоропадский. Наступила зима, и Карлу XII пришлось расположить свои войска, на зимовку в районе городов Прилуки, Гадяч, Ромны и Лохвица. 27 декабря 1708 г. шведские войска начали осаду крепости Веприк, гарнизон которой, несмотря на мужественное сопротивление, в ночь на 7 января 1708 г. вынужден был капитулировать.
В марте 1709 г. на сторону Карла XII и Мазепы перешли запорожские казаки во главе с кошевым атаманом К. Гордиенко. Предчувствуя приближение генерального сражения, Петр I решил укрепить свой тыл и окончательно искоренить измену в Малороссии. 14 мая 1709 г. начался штурм Запорожской Сечи русскими войсками. Казачья столица была уничтожена, но к тому времени большинство запорожцев находилось уже в шведском лагере.
Острый недостаток продовольствия заставил Карла XII повернуть на юг. Весной 1709 г. шведский король перенес военные действия в район г. Полтавы и 1 апреля 1709 г. он начал осаду этого города. В апреле-июне 1709 г. шведам не удалось взять Полтаву. Тогда Петр I сосредоточил свои войска севернее Полтавы у дер. Яковцы и вынудил Карла XII принять сражение на невыгодных для шведской армии условиях. 27 июня 1709 г. состоялась Полтавская битва, закончившаяся полным разгромом шведской армии. 29 июня 1709 г. Карл XII, бросив свою армию, вместе с гетманом Мазепой бежал во владения турецкого султана.
После этого наступил переломный момент во всей Северной войне. Получив сообщения о разгроме армии Карла XII, антишведский союз с Россией возобновили Польша, Саксония и Дания, а вскоре Ганновер и Пруссия. В октябре в наступление против шведов перешли русские войска в Прибалтике. В июне-июле 1710 г. русские войска взяли Выборг и Ригу, а в августе-сентябре — прибалтийские крепости Дюнамюнде, Пернов (Пярну), Кексгольм, Ревель (Таллин). Однако благоприятный для России ход военных действий в Прибалтике осложнился началом войны с Турцией и последующим неудачным Прутским походом Петра I в 1711 г. Вплоть до окончания войны с Турцией в 1713 г. и заключения Андрианопольского мира у России не было возможности продолжить военные действия против шведов.