בסופו של יום תקפו השוודים את המערך הרוסי בעת סופת שלג והניסו את האחרונים מעמדותיהם מסביב לעיר. התבוסה בנארווה ביטלה את מעמדה של רוסיה כשחקן משמעותי במלחמה למשך מספר שנים, ואפשרה לקרל למקד את תשומת לבו בפולין ובסקסוניה. במקור חשש פיוטר מפני מתקפה שוודית לתוך רוסיה עצמה לאחר ההפסד בנארווה והוקל לו לדעת שיריביו השוודים פנו דרומה, להמיט את חרון אפם על הפולנים-ליטאים. תחילה הקימו הפולנים והרוסים מערך הגנה משותף על גדות נהר הדווינה המערבי בכדי למנוע את התקדמות השוודים דרומה. המערך המאוחד קרס לעומת השוודים, שנחתו על גדות הנהר עם הטובים שבאנשיהם ובראשם עמד קרל ה-12. התנועה השוודית המשיכה דרומה לעבר פולין והמשיכה להתרכז בחזית זאת למספר שנים. פיוטר ניצל תקופה זו כדי לשפר את איכות צבאו ואף לכבוש את השטח בו שוכנת כיום אסטוניה, שעה שהמלך השוודי, שהיה משוכנע ביכולתו להכניע את הרוסים, מתעלם מהמתרחש בגזרה זו.
ביולי 1704 החל פיוטר לנוע בראש צבאו החדש לעבר כיבוש נארווה. לקראת המצור על נארווה מנה המוצב השוודי בעיר 2,500 ל-3,500 רגלים, 1,000 פרשים ו-570 תותחים כבדים. ראשית הכוחות הרוסים מנעו תגבור אספקה שוודית דרך נהר נארווה. המצביא הרוסי אלכסנדר מנשיקוב הציע לצאר לחפש את חלק מרגימנטים הרגלים כחיילים שוודים במדים כחולים. פיוטר עצמו הנהיג את הכוחות המחופשים בעת תנועתם לעבר העיר נארווה עצמה וחלק מהכוחות השוודים נעו לעברם אך לא פתחו את שערי העיר. לאחר התכתשות צבאית כשלה האסטרטגיה של מנשיקוב להביא לכניעת השוודים. לאחר הסדר מצור מסורתי מסביב לעיר החלה המתקפה לתוכה ב-9 באוגוסט (הלוח הגרגוריאני). המתקפה החזיתית צלחה והסתיימה בנפילת המוצב השוודי ונפילת המאחז השוודי בנארווה לידי רוסיה.
בשנת 1703, בעיצומם של הקרבות בין שוודיה ופולין, ייסד פיוטר את עירו החדשה סנקט פטרבורג (על שם פטרוס הקדוש שעל שמו הוא עצמו נקרא בעת הטבלתו לנצרות) באזור אינגריה (שאותה כבש מידי שוודיה). המבצר המקומי של העיר היה מבצר פֶּטְרוֹפַּבְלוֹבְסקיה (מבצר פיוטר ופאבל). כדי לנצל את מלוא המשאבים לצורך בניית העיר החדשה, אותה ביקש להפוך לבירת רוסיה, אסר פיוטר על בניית מבני אבן כלשהם מחוץ לשטח העיר, עד אשר בניינה יושלם. עבור בנייתה של סנקט פטרבורג הובאו אלפי עובדי פרך שמתוכם רבים מתו בתהליך הבנייה. במקומה של העיר המיועדת היה תחילה רק המבצר השוודי ניינשאנץ.
לצורך הקמת העיר החדשה הזמין פיוטר לרוסיה מהנדסים זרים מכל רחבי אירופה וכדי לזרז את בניית בתי האבן, אסר על בניית בתי אבן ברוסיה כולה, למעט בסנקט פטרבורג. אחד האירועים החשובים ביותר בחיי העיר הצעירה הייתה הגעתו של ספינת הסוחר הראשונה בנובמבר 1703, עם הגעת אוניית סוחר הולנדית שעגנה בסנקט פטרבורג. לרב החובל הוענקו 500 מטבעות זהב, כמובטח, והיה זה האות להגעת ספינות סוחר נוספות. הבעיות הגדולות שהתעוררו בסנקט פטרבורג, נבעו מן ההצפות השכיחות. לדוגמה, בליל ה-5 באוקטובר 1705 הציפו מים את הגדה השמאלית והציפו את בניין האדמירלות ובית משפט אך לא הרסו אף בית.
ב-1712 הוכרזה העיר כבירת האימפריה הרוסית. העיר נותרה בירה רשמית עד 1918, אבל בתקופת שלטונו של פיוטר השני, הבירה הוחזרה זמנית למוסקבה. לאחר התחלת בניית המבצר והביצורים האחרים בעיר, בחודש דצמבר 1706, פיוטר ביקש לבנות את קרנוברק (כיום המוזאון ההיסטורי הצבאי לארטילריה, תקשורת והנדסה), על מנת להגן על מצודת פטר ופאבל מפני הפגזה מן החוף, כאשר שנתיים קודם לכן ביקש לבנות את האדמירליות - כמטה הצי הרוסי. כמעט כל פעילותו של פיוטר הגדול שסבבה אודות סנקט פטרבורג בדרך זו או אחרת התמקדה בנטיעת המסורות הימיות. כל מגוריו ומעונותיו של פיוטר ניצבו קרוב למים, ארמון הקיץ הארמון הנסתר היו מוקפים במים מכמה צדדים. במקביל, לקח פיוטר את מרתה סקוורונסקיה כפילגש. לאחר שהמירה דתה לנצרות אורתודוקסית ואימצה את השם יקטרינה, נישאה לפיוטר בחשאי בשנת 1707.
הפלישה השוודית לרוסיה.
סדרת הפסדים הביאה את המלך הפולני אוגוסט השני לוותר על כתרו בשנת 1706 והוא הוחלף בסטניסלאב לשצ'ינסקי, שהיה לעושה דברם של השוודים. תשומת לבם של השוודים הועברה עתה לרוסיה, וב-1708 פלשו לתחומה. ביולי של אותה שנה נוצחו כוחותיו של פיוטר בקרב גולובצ'ין וקרל המשיך את מסעו לתוך רוסיה, תוך כדי שהוא כורת ברית סודית עם ההטמאן של הקוזאקים איוואן מזפה. כל עוד נעו השוודים מזרחה לתוך לב רוסיה, כוחותיו של פיוטר נסוגו מפניהם. בעת נסוגו הכוחות הרוסים, השתמשו בטקטיקת אדמה חרוכה אלימה שהותירה את שדות המרעה העצומים שרופים לחלוטין ולצבא השוודי לא נותר דבר. פיוטר וידא שלצד הנסיגה העיקרית ימשיך תגבור הכוחות הרוסים מסביב למבצר פטרופבלוסקיה מחשש למתקפת פתע שוודית באזור. קרל מצידו לא הניע את כוחותיו לעבר סנקט פטרבורג, אלא לעבר מוסקבה, הבירה הרוסית המסורתית, דרך מינסק.
תחילה הופרעה התנועה השוודית לתוך לב רוסיה רק עקב פשיטות משניות של טטרים וטקטיקת האדמה החרוכה של פיוטר וצבאו. ביולי הצליחו השוודים לחצות ביצה ולהניס על נפשו את המוצב הרוסי שעמד לגדותיה. פיוטר, על אף הפגיעה החמורה שגרם הדבר מבית, הורה לשרוף כל גבעול חיטה וכל שדה חקלאי העומד לקראת דרכם של השוודים. עם מחסור באוכל ובאספקה החלו לשרוץ מגיפות בתוך שורות הצבא השוודי. ציוד הצבא השוודי היה דל מאוד והוא סבל ממחסור חמור. קרל סירב לסגת אל עבר הדנייפר על-מנת להיפגש עם כוחות תגבור האספקה. קרל סמך על התגבורת שהייתה אמורה להגיע משוודיה ויחד אתה אספקה רבה, אך בקרב לסנאיה ספג כוח זה הפסד צורב ואיבד את כל המטען.
קרב פולטבה והמערכה בעות'מאנים.
למרות אובדן האספקה סירב קרל לסגת, ובמקום זה בחר לפלוש לאוקראינה, שבה היה לו בן ברית בדמותו של מזפה. כמו כן, ארץ הקוזאקים, המרוכזת בתוך הסיץ' הזפורוז'י, לא הוחרבה בטקטיקות האדמה החרוכה של הצבא הרוסי כפי שרוסיה הלבנה הוחרבה. פיוטר השכיל לשנע את כוחותיו דרומה, ולהשמיד כל נכס רוסי שיכול היה לסייע לשוודים בדרכם לאוקראינה. ללא אספקה ראויה, השוודים לא הצליחו לכלכל את כוחותיהם, וסבלו בחורף הקר של 1708–1709. במהלך החורף פרע קיפאון קיצוני ברחבי אירופה שהיה לנקודת שיא של המינימום של מאונדר. חיילים שוודים מתו בכפור אך מקביליהם הרוסים היו מאורגנים די לקראת החורף. היה זה החורף הקר ביותר באירופה מזה 500 שנה ובמהלכו קפאו נהרות עד אל הלגונה של ונציה. כאשר הסתיים החורף, נותר הצבא השוודי רק צללית ממה שהיה במקורו כאשר לרשות קרל נותרו 20,000 חיילים בלבד.
אף על פי כן, עם בוא הקיץ חידשו השוודים את מאמציהם לכבוש את אוקראינה. בשלב זה גילה פיוטר תוקפנות רבה יותר והחל להניע את צבאו במהרה אחרי קרל. השוודים ציפו לתגבורת עם אספקה ולתגבורת של חיילים קוזאקים בהגיעם לאוקראינה. פיוטר נע תחילה אחר כוחות התגבורת השוודים וכאשר פגש בהם הצבא הרוסי וידא פיוטר להנהיג באופן אישי את המשמר הצבאי העליון נגד השוודים. הקרב הסתיים בנסיגת שני הצבאות ליערות הקרובים לשדה הקרב ובאישון לילה הורה המפקד השוודי על נסיגה לא מסודרת, שמנעה את ההגעה הסופית של התגבורת לידי קרל וכוחותיו באוקראינה. לנוכח המצב הנתון, קרל ואנשיו נשענו על התגבורת הקוזאקית מצידו של מזפה ואנשיו. מזפה מצידו, העריך באופן שגוי את נאמנות הקוזאקים לו כמו גם את התגובה לבגידתו בפיוטר. כאשר נודע על כך שהחל במרד נגד הריבון הרוסי, רוב אנשיו נטשו אותו והוא נותר עם 3,000 איש בלבד מתוך 30,000 שהיו לצידו במקור.
כאשר נודע לפיוטר על בגידתו של מזפה הוא היה באמצע דרכו לעבר אוקראינה לפגוש בקרל. בעודו נע עם צבאו, ביצע פנייה משנית לעבר בירתו של מזפה, באטורין (ממוקמת במחוז צ'רניהיב המודרני), הבעיר אותה באש ושלח את גופות המשמר הקוזקי שלה קשורים על צלבי עץ לנהר הדנייפר. כאשר איוואן הגיע לבסוף למחנה של קרל, היו נתונים לפיקודו לערך 1,500 איש בלבד. צבאו של פיוטר פגש בצבא השוודי בקרב פולטבה ב-27 ביוני 1709. פיוטר נע לעבר פולטבה בראשות צבא כביר למטרת שחרור העיר והמתת השוודים הצרים עליה. צבאו של פיוטר מנה 80,000 איש לעומת כ-18,000 איש שעמדו לרשות הכוחות המאוחדים השוודים והקוזאקים של מזפה. הרוסים החלו לחפור תעלות מסביב לפולטבה. הכוחות השוודים נעו להתקפה, אך מסרים אקראיים והוראות לא אחידות הובילו לאי-סדר במחנה השוודי והעניקו למחנה הרוסי זמן להתארגן למערך התקפי נגד השוודים.
הכוחות השוודיים נעו במתקפה חזיתית שפגשה באש תותחים רוסיים. הם נחלו הפסד מוחץ ונותרו שבורים לחלוטין מהקרב. קרל בקושי הצליח לחמוק משדה הקרב. עתה קצר פיוטר את פירות ההשקעה בצבאו: הצבא הרוסי גרם לעשרת אלפים הרוגים בקירוב לצבא השוודי, ושבה את רוב שרידיו של הצבא השוודי במחיר של כמה אלפי הרוגים ופצועים מצידם. בפולין שב אוגוסט השני לכהן כמלך. הצבא השוודי התחלק ליחידה שעמדה במגננה נגד הרוסים המתקדמים ויחידה שנסוגה לעבר הדנייפר ובראשה המלך קרל. כאשר הגיעו לחופי הים השחור, החלו השוודים בניסיון להימלט מאימת הרוסים. בעוד נסוגו על אונייה לתוך הים, נקטל העורף השוודי בידי הרוסים הקרבים בפיקודו של פיוטר. מתוך 1,300 חיילי משמר העורף, רק 500 שוודים נותרו עם הנסיגה. קרל נמלט לשטח האימפריה העות'מאנית ששמרה עד אז על נייטרליות, וניסה לשכנע את הסולטאן, אהמט השלישי לסייע לו במערכה מחודשת נגד הרוסים.