Полтава охранялась 2600 ополченцами и 4200 солдатами, когда 1 апреля 1709 года подошел шведский авангард. Управлял столь малочисленным контингентом комендант-полковник Алексей Степанович Келин. К 28 апреля вместе с Карлом подтянулись основные силы захватчика. Однако быстрый штурм шведам не удался, и они начали осаду. Несколько подкопов и заложенные фугасы ни к чему не привели — русским удавалось обезвредить все «шведские начинки». Из крепости на головы шведам летели камни, каленья, помои и даже мертвая кошка, которая досталась в качестве погон Карлу XII.
4 июня после почти 2-х месячной осады прибыл
Петр с основными силами русской армии, которая в разы превосходила по численности шведское войско. Русский царь сам утвердил расстановку своих сил, которая сыграла уникальную на то время стратегическую роль. Итак, поперек поля протянулась линия из 6 опытных редутов, которая расположилась на расстоянии выстрела друг от друга. Перпендикулярно им появились еще 4 редута. За редутами стояли 17 драгунских полков с А. Меншиковым во главе. Далее следовали пехота и артиллерия. Таким образом, Петр хотел «обеспечить» шведской армии обстрел со всех сторон.
Перед началом боя, Карл лично поехал осмотреть расстановку русских. Его сопровождал генерал шведской армии А. Левенгаупт. Русские войска, завидя незваных гостей, открыли огонь. Одна из пуль угодила в коня генерала, и тот обратился к своему королю с просьбой прекратить прогулки под пулями, но Карл не внял просьбе Левенгаупт, посоветовав последнему обзавестись новой кобылкой. Но шведский генерал стоял на своем: «Без пользы приносить в жертву не следует даже солдата, не говоря уже о генерале», и покинул своего короля. А Карл продолжил прогулки по небезопасному берегу под свист пролетающих пуль. Уже собираясь покинуть место осмотра, Карл развернул лошадь, как вдруг русская пуля вонзилась ему в ногу, раздробив кость. В результате, вплоть до самой битвы Карлу пришлось пролежать в постели, превозмогая боль и бессильную злобу на русские снаряды.
Блуждая по русским землям почти год, шведы пережили суровую зиму, голод и болезни, лишившись почти трети своей мощи. Карл понимал, что силы его армии уже не те, что были, когда он колесил по Польше и Саксонии, но все же рассчитывал на помощь от генерала Крассау и марионеточного короля Лещинского. Те и, правда, поспешили прийти на помощь шведскому королю, но у Львова их поджидало русское войско под командованием немецкого генерала Гольца. Когда Карл понял, что продолжать ждать помощи извне уже не имеет смысла, тем более, когда продовольствие стремительно иссякает, он принял решение атаковать Петра в ночь на 27 июня.
Численное превосходство было на стороне русских, но шведы надеялись на свою стратегию и военный опыт. В 2 часа ночи Карл атаковал первые редуты. Под натиском шведской армии первые две шеренги пали, но интенсивный огонь со стороны русской армии остудил их пыл, и шведы решили обойти третье укрепление. Но «габариты» Карла не уместились между Будищенским лесом и продольным редутом. Тогда группа войск генерал-майора Шлиппенбаха укрылась в лесу, но от преследовавшего его Меншикова скрыться так и не удалось. Войско его было разбито, а сам генерал оказался в плену. Это был первый шведский генерал, плененный русскими в Полтавской битве. Уже в 1712 году он поступил на службу к Петру и прожил в России до самой своей смерти.
Артиллерия русской армии оказалась на высоте, помимо численного преимущества, Петр мог похвастаться и слаженной «работой» артиллеристов. Перед решающим боем, он обратился к своим солдатам с речью, в которой призвал сражаться не за себя, Петра,
Царя русского, а за свое Отечество, Петру врученное! И самому ему жизнь недорога, лишь бы страна его жила в блаженстве и благосостоянии. Его речи, наполненные оптимизмом, стали для русской армии стимулом для победы над непобедимой шведской армией.
В ожесточенном бою русские драгуны врезались в неприятельскую армию, посеяв в ней хаос, в то время как кавалерия окружала их со всех сторон. Петр отдал приказ: «В атаку!» Увидев перед собой русские штыки, шведы кинулись наутек. К 11 часам исход боя был предрешен.
В нескольких километрах от поля битвы в местечке Пушкаревка собирались уцелевшие шведы, туда же прибыл и сам король Карл. Оценив потери своей армии, Карл принял решение бежать в Османскую империю, где намеревался найти нового союзника для борьбы с Россией. Чтобы осуществить свое намерение, Карлу с остатками войска, необходимо было переплыть Днепр, который как назло, разбушевался. Переправочные средства на реке отсутствовали, вернее, были уничтожены в ходе карательной операции Петра против Запорожской Сечи. В результате перебраться вплавь на правый берег Днепра удалось лишь 3 тыс. человек, включая короля; часть шведской армии во главе с генералом А. Левенгауптом осталась на левом берегу. 30 июля Меншиков окружил его, и шведы капитулировали. России достались 16-тысячная деморализованная шведская армия с генералом Левенгауптом, 28 орудий, 127 шведских знамен и полупустая королевская казна.
27 июня Петр устроил пир в честь победы. На русском застолье присутствовали и именитые пленники: обер-гофмаршал Пипер, генерал-майоры Шлиппенбах, Штакельберг и Гамильтон.
После поражения под Полтавой, Карл удачно пересек Османскую границу. Турецкий султан принял битого короля с почестями, однако, Карлу нужны союзники, и он пытается убедить турецкий султанат выступить против России.
Внезапно 22 августа в Бендерах умирает Мазепа, по официальным данным от педикулеза, но существует версия, что Мазепа отравился, решив, что лучше умереть «по собственному желанию», чем погибнуть от рук Петра.
9 октября 1709 года Петру удалось восстановить Северный союз, заключив новый союз сначала с Саксонией, а потом – с Данией. Полтавская битва открыла России путь к величию, она по праву заняла ведущее место на карте Европы, сместив оттуда Швецию, которой так и не удалось больше подняться на подмостки мировой истории.