К этому времени, воспользовавшись уходом шведов на Запад, русские войска не только захватили всю Прибалтику, но продвинулись в Литву, заняли часть украинских земель, входивших в состав Речи Посполитой. Однако это привело к рассредоточению русских сил. И когда Карл XII во главе мощной и победоносной армии появился вблизи русских границ, стремясь дать русским генеральное сражение, Петр I не стал искушать судьбу и отступил вглубь русской территории. Он ставил своей задачей собрать в кулак все основные силы и одновременно всячески «томить неприятеля», т. е. изматывать его отдельными стычками, заставить его наступать среди враждебного украинского и русского населения, брать с боем каждый населенный пункт. Русские прятали от шведов продовольствие, фураж, заставляли их двигаться по «мертвой зоне». Петр I вовсе не уклонялся от решающей битвы, но предполагал дать её в наиболее выгодных условиях: «при своих границах», при подавляющем перевесе сил в свою пользу с тем, чтобы не было ни малейшего сомнения в окончательной победе над врагом. Всегда порывистый, нетерпеливый Петр на сей раз действовал исключительно взвешенно и осмотрительно. С этой целью он увел армию из Литвы, отдал неприятелю часть территории, сосредоточил основные силы в белорусском Полесье, прикрыв тем самым возможные пути наступления шведов как на северо-восток, в Прибалтику, на Петербург, так и в центральную Россию, на Москву. К обороне были подготовлены Новгород, Псков, Великие Луки, Смоленск, укреплялись подступы к Петербургу и Москве. В лесах устраивались засеки и завалы, дороги переграждались рвами. Армия постоянно получала новые подкрепления, артиллерию.
К январю 1708 г. Карл XII захватил Гродно в Литве, потом занял Минск. Летом, у села Головчина, русский корпус преградил путь шведам на Восток, но Карл XII сумел одержать верх. Русские отступили, потеряв немало убитыми и ранеными. Шведы захватили Могилев. Теперь был открыт путь на Смоленск. Однако в последующих сражениях на этом направлении шведские передовые отряды потерпели ряд поражений. Особенно чувствительный удар шведы получили под деревней Раевкой. Во главе шведского авангарда стоял сам король. Русским заградительным корпусом командовал Петр. Впервые коронованные соперники встретились лицом к лицу. Русские драгуны опрокинули здесь шведскую кавалерию. Под королем была убита лошадь, и он чуть не попал в плен. После этого на военном совете Карл XII и шведские генералы решили двинуться на юг.
Таким образом, военный заслон, воздвигнутый Петром I на пути в центр страны, сыграл свою роль. Прямому наступлению Карл XII предпочел обходной маневр.
В этот момент в шведский лагерь пришло известие о переходе украинского гетмана Ивана Мазепы на их сторону, и Карл XII не без основания рассчитывал на военную помощь Мазепы, а также на богатые продовольствием районы Украины. Там шведский король предполагал дать отдых своей армии, собирался подтянуть сюда подкрепления с севера, от Риги и уже затем, с новыми силами двинуться на Москву. К тому же он надеялся, что его успехи приведут к выступлению Турции и Крыма на стороне Швеции. Тогда Россия будет обречена.
Однако расчетам Карла XII не суждено было осуществиться. Большая часть украинского народа враждебно встретила шведов; за Мазепой пошло лишь около 4–5 тысяч казаков. Это были те представители казацкой верхушки, кто был связан с враждебной России частью польской шляхты и мечтал, как и Мазепа, вновь отдать Украину под власть Речи Посполитой. Но часть приверженцев гетмана, в основном рядовые казаки, вскоре покинули шведский лагерь. Мазепа оказался изолированным от своего народа. С каждым днем наступающей осени таяли планы шведского короля отдохнуть на теплых зимних квартирах. Русские летучие отряды постоянно тревожили шведскую армию, на Украине нарастало партизанское движение против иноземных захватчиков.
Вскоре основная часть русской армии также двинулась на юг, как бы «сопровождая» Карла XII, а Петр с кавалерийским корпусом направился навстречу двигавшемуся из-под Риги на соединение с основной армией шведов корпусу генерала Левенгаупта с огромным обозом боеприпасов и продовольствия.
28 сентября 1708 г., около деревни Лесной, в лесисто-болотистой местности Петр кавалерией численностью 11 500 человек обрушился на двигавшийся по лесной дороге 16-тысячный шведский корпус. Скованные обозом шведы не успели развернуть свои силы и смешались. Понеся огромные потери, они отступили, но русские драгуны преследовали их, не давая опомниться. Несколько часов длился бой. Только около 7 тысяч человек шведов сумело прорваться к Карлу XII. Левенгаупт потерял весь обоз и артиллерию. Впоследствии Петр I назвал битву под Лесной «матерью Полтавской баталии», шутливо намекая на то, что Полтавское сражение произошло ровно девять месяцев спустя после победы под Лесной.