Затем Карл направился в Прибалтику. 6 октября он высадился в Пернове (Пярну), намереваясь идти к Риге. Но Август, узнав о появлении главных шведских сил, снял осаду города и отступил в Курляндию. После этого Карл двинулся к Нарве с 12-тысячным войском, оставив 5-тысячный отряд для обеспечения от польско-саксонской армии.
Нарву, гарнизон которой насчитывал 1,5 тысячи солдат и 150 орудий, с середины октября осаждала русская армия в 34 тысячи человек при 145 орудиях. Получив известие о движении Карла к Нарве, Петр выслал ему навстречу 6-тысячный отряд конницы под командованием Б.П. Шереметьева. У Везенберга этот отряд потерпел поражение от шведского авангарда и отступил к главным силам, утратив соприкосновение с противником. После этого Петр, опасаясь поражения, покинул армию и отбыл в Новгород.
Рано утром 19 ноября шведы через лес внезапно подошли к русскому лагерю и заняли господствующую высоту Германсберг. После этого шведская армия развернулась в боевой порядок и начала артиллерийский обстрел русских позиций. Русские пушки отвечали. В 2 часа дня Карл бросил свои войска в атаку. Сильная метель позволила наступающим подойти незамеченными ко рву, окружавшему лагерь. Дав залп из мушкетов, шведские пехотинцы забросали ров фашинами и ворвались в лагерь. Центр русского боевого порядка был прорван, и многие офицеры-иностранцы, находившиеся на русской службе, поспешили сдаться. На правом фланге Преображенский и Семеновский гвардейские полки отбили все атаки, но это не изменило неблагоприятного для русской армии хода сражения. Левофланговая дивизия русских также дралась упорно, пока не был ранен ее командир генерал Вейде. После этого ряды дивизии расстроились, она была окружена и сложила оружие.
Конница Шереметьева бежала с поля боя в самом начале сражения, а пехота центра пришла в полное расстройство. Главнокомандующий русской армией герцог де Кроа согласился на капитуляцию. Русские войска получили право отступить к Новгороду, но оставили шведам весь свой лагерь с запасами и артиллерию.
Русская армия в битве при Нарве потеряла 4 тысячи убитыми, 2 тысячи утонувшими в реке и 12 тысяч пленными. Потери шведов составили около 2 тысяч убитых и раненых. Карл одержал полную победу над втрое сильнейшим по численности противником. Кроме того, немало уцелевших русских солдат погибли при отступлении к Новгороду от голода и холода.
Петр впоследствии так объяснил «нарвскую конфузию»: «Шведы под Нарвою над нашим войском викторию получили, что есть бесспорно, но надлежит разуметь, над каким войском оную получили. Только один старый Лефортовский полк был, а два полка гвардии были только на двух атаках у Азова, и те полевых боев, а наипаче с регулярными войсками, никогда не видывали. Прочие же полки, как офицеры, так и рядовые, самые были рекруты; да и к тому же за поздним временем великий голод был, понеже за великими грязьями провианта привозить было невозможно. Единым словом сказать можно: все то дело, яко младенческое играние было, а искусства ниже вида. Но когда мы сие несчастье (или лучше сказать великое счастье) под Нарвою получили, то неволя леность отогнала и к трудолюбию и искусству день и ночь прилежать принудила и войну вести уже с опасением и искусством велела».
Царь занялся реорганизацией армии. Времени для этого у него было достаточно. Карл не рискнул преследовать русских вглубь России. Вместо этого шведский король двинулся в Польшу. 27 июня 1701 года он нанес поражение армии Августа, вновь осадившей Ригу. 18 июля последовал новый успех шведов под Динабургом. Армия Карла заняла Курляндию, затем двинулась в Литву, а 14 мая 1702 года заняла Варшаву. 19 июля 1702 года в сражении под Клишовым шведы разбили польско-саксонскую армию и вслед за этим заняли Краков. 1 мая 1703 года собранная Августом новая армия была разгромлена под Пултуском.
В 1704 году созванный в Варшаве под охраной шведских штыков сейм лишил Августа II польского трона и избрал королем шведского ставленника Станислава Лещинского. В следующем году почти все польские земли перешли под контроль армии Карла.
Петр пришел на помощь Августу и сосредоточил в Гродно весной 1705 года 40-тысячную армию, которая в январе 1706 года была окружена шведами и лишь в начале апреля, с большими потерями и пожертвовав арьергардом, прорвалась на юг. Тем временем саксонский курфюрст потерпел новое поражение и в сентябре 1706 года вынужден был заключить в Альтранштедте мирный договор, по которому отказался от притязаний на польскую корону и разорвал союз с Россией. Но уже в октябре с помощью русских войск польско-саксонская армия нанесла поражение шведам при Калише. Однако потом успех вновь склонился на сторону шведских войск, оккупировавших Саксонию.