Армия Петра значительно превосходила силы шведов, в ее состав входило 42 тысячи регулярных и 5 тысяч иррегулярных войск. Кроме того, в последний момент подошло 3 тысячи калмыков хана Акжа (некоторые историки, в том числе Бескровный, говорят о 30 тысячах калмыков, но эта цифра появилась, скорей всего, благодаря нерадивому писарю, поставившему еще один ноль в документе). Еще больше было превосходство русских в артиллерии. Полевая и полковая артиллерия под Полтавой включала 69 стволов: одну гаубицу, 3 мортиры, 65 пушек. Все эти данные приводятся без гарнизона Полтавы, о котором было сказано выше.
27 июня в 2 часа ночи шведская армия начала наступление. Впереди четырьмя колоннами шла шведская пехота, за ней шестью колоннами двигалась конница. Шведам удалось взять два передовых редута. Однако перед следующим редутом из-за сильного огня русских им пришлось остановиться. Тогда Карл решил передвинуть войска влево и обойти редуты. Но шведская армия не могла поместиться между Будищенским лесом и продольными редутами, вследствие чего во время разгоревшегося здесь боя группа шведских войск из шести батальонов пехоты и десяти эскадронов конницы под командованием генералов Росса и Шлиппенбаха, отрезанная редутами, оторвалась от основной части армии и укрылась в лесу севернее Полтавы.
Петр организовал отряд из пяти батальонов пехоты и пяти драгунских полков под командованием Меншикова, который нанес поражение оторвавшейся группе шведских войск и взял в плен генерала Шлиппенбаха. После этого войска Меншикова наткнулись в лесу на крупный резервный отряд шведов и разгромили его. Направив к Полтаве часть своих войск для преследования остатков разгромленных сил противника, Меншиков во главе остального отряда прибыл к укрепленному лагерю.
Тем временем главным силам шведской армии с большими потерями удалось прорваться через линию редутов. Правый фланг шведских войск оказался под ударом со стороны русского лагеря. Петр воспользовался этим и приказал открыть по врагу сильный артиллерийский и ружейный огонь, в результате чего шведы понесли большие потери и были отброшены к Будищенскому лесу.
После этого Петр принял решение дать сражение на открытой местности. Он вывел войска из лагеря и выстроил их в две линии. В целях наилучшей взаимной выручки каждый пехотный полк был построен в следующий боевой порядок: один батальон – в первой линии, другой – во второй линии. На флангах размещалась конница. В резерв были выделены девять батальонов, которые оставались в лагере. Артиллерия располагалась по всему фронту впереди боевого порядка. Шведская пехота была построена в одну линию, а кавалерия на флангах – в две линии.
Построив полки для решительной атаки, Петр обратился к солдатам со словами: «Воины! Вот пришел час, который решит судьбу отечества. И так не должны вы помышлять, что сражаетесь за Петра, но за государство Петру врученное, за отечество... Не должна вас также смущать слава неприятеля, будто бы непобедимого, которой ложь вы сами своими победами над ним неоднократно доказывали... А о Петре ведайте, что ему жизнь его недорога, только бы жила Россия в блаженстве и славе для благосостояния вашего!»
В девятом часу утра шведы перешли в наступление. Русские войска с близкого расстояния открыли сильный артиллерийский и ружейный огонь, который наносил врагу большой урон. Однако шведы продолжали атаку, настойчиво стремясь прорвать фронт русских войск. Началась рукопашная схватка. Правое крыло шведов стало теснить передовой порядок Новгородского полка. Первая линия русских войск была прорвана почти в самом центре.
В это время Петр лично повел в бой батальон второй линий Новгородского полка. Стремительным ударом русские войска смяли прорвавшегося противника и закрыли прорыв. Ожесточенный рукопашный бой шел по всему фронту. Русская конница охватывала фланги шведов. Конные полки под командованием Меншикова, сосредоточенные на левом фланге, стали угрожать тылу шведской армии. Противник дрогнул, начал отступать и вскоре обратился в бегство.
Отличительной чертой тактики Карла XII являлось глубокое презрение к полевой артиллерии. Практически все свои победы он одержал без участия артиллерии. Не стала исключением и Полтава. 28 пушек, то есть почти вся артиллерия шведов, пробыли все сражение в обозе, в то время как огонь русских пушек буквально косил шведов. Впервые шведская артиллерия заговорила в полный голос лишь тогда, когда русская конница попыталась во второй половине дня 27 июня атаковать шведский обоз у местечка Пушкаревка. Первый же залп обратил конницу в бегство.