План Наполеона заключался в том, чтобы прорвать фронт австрийцев в центре и захватить пути на Моравию, Богемию и Венгрию. На поле боя это должно было выразиться в стремлении овладеть с фронта участками Адеркла—Ваграм и Ваграм—Нейзидель, заставить австрийцев очистить Руссбахский фронт и отрезать Карла от отряда Иоанна. Соответственно этому в ночь перед сражением были отданы приказы: корпус Даву должен был охватить левый фланг австрийцев и при содействии артогня на фронте Удино и Богарне заставить Карла покинуть Руссбахские высоты. Массена было приказано оставить под Асперном одну дивизию, а остальные части корпуса сосредоточить к Адеркла. Крупный резерв Наполеона оставался в Расдорфе.
6 июля в 4 часа утра австрийские войска левого фланга тремя колоннами спустились с высот и под прикрытием тумана атаковали позиции маршала Даву. При содействии энергичного артиллерийского огня Розенберг двинул свои войска к Гроссгофену и Глинцендофу. Заслышав канонаду и решив, что это подошли в помощь австрийцам войска эрцгерцога Иоанна, Наполеон бросился с двумя кирасирскими дивизиями и конной артиллерией к своему правому флангу и вместе с перешедшими в контратаку солдатами Даву отбросил австрийцев. Генерал Резенберг, не возобновляя наступления, остановился на Нейзидельских высотах.
В 7 часов утра австрийцы развернули свои войска между деревнями Адеркла и Ваграм и завязали артиллерийскую дуэль с французами. Одновременно с этим им удалось взять саму деревню Адеркла, так как стоявший здесь накануне маршал Бернадот самовольно оставил этот пункт. Пытаясь исправить ошибку, Бернадот двинул свой корпус в промежуток между Адеркла и Ваграмом, но, попав под перекрестный огонь противника, отступил с тяжелыми потерями. В тоже время на правом фланге австрийцев перешли в наступление Кленау, Ко-оврат, гренадеры и конница Лихтенштейна. В центре подоспевшие на помощь Бернадоту части Массена сумели отбить Адеркла. Но в результате дальнейшего боя на левом фланге Наполеона австрийцы занимали охватывающее положение по линии Асперн—Брентенли—Адеркла— Нейзидель.
Около 10 часов правый фланг австрийцев продолжал продвигаться вперед, чтобы отрезать французов от мостов на Дунае. Вставшая на их пути дивизия генерала Ж. Буде после упорного боя была вынуждена отступить. Наполеон оказался в тяжелом положении: противнику удалось создать непосредственную угрозу переправе, где уже слышалась стрельба. Поспешив к Адеркла и ознакомившись с обстановкой, Наполеон решил сдерживать австрийцев но всему фронту, а против их центра сосредоточить ударную группу войск с целью последующего прорыва. В связи с этим генерал Удино получил приказ ограничиться артиллерийской дуэлью против Баумерорфа и дождаться, когда Даву на правом фланге поднимется на Нейзидельские высоты, чтобы затем начать атаку на Ваграм. Массена, подкрепленному двумя дивизиями конницы, он приказал двинуться на Асперн для удержания противника, подходившего к переправам. В оставленный Массена участок была выдвинута кавалерия Бессьера, а Макдональд с пятью дивизиями из состава Итальянской армии Богарне получил задачу нанести удар в направлении Зюссенбрунна. Поддержать его должны были остальные войска Богарне, корпус Мармона, дивизия Вреде и гвардия.
В самом центре Макдональд формировал ударную колонну в 45 000 человек и готовился к решительному удару. Перед его войском была устроена 104-орудийная батарея под командой генерала Друо и маршала Лористона, которая должна была в нужный момент проложить коридор в австрийских рядах. Однако для этого требовалось время. Тогда, чтобы удержать рвущихся австрийцев, Наполеон послал в бой конницу Бессьера. 40 эскадронов кирасир и гвардейской конницы вихрем налетели на австрийский гренадерский корпус и остановили его. Жестокая схватка французской конницы дала свои результаты. Время было выиграно, и Макдональд закончил построение своей колонны.
Пока ударная колонна формировалась, Массена совершал свой фланговый марш перед крупными силами противника, двигаясь тремя дивизиями в одной колонне, прикрытой справа конницей. Кленау, заняв Асперн отбросил дивизию Будэ к Лобау и создал угрозу Массена, захватив Эсслинген. Но Массена перешел в наступление, и Кленау отступил на Гирштетен.
Между тем к 12 часам войска Макдональда выстроились за 104-пушечной конной батареей. Их фланги прикрывали кирасиры Нансути и легкая гвардейская конница. Наполеон ждал лишь того момента, когда Даву взойдет на Нейзидельские высоты. И этот момент наступил. В 13 часов Даву после нескольких отбитых атак по трупам своих и чужих солдат все же взошел на высоты и взял штурмом опорный пункт австрийцев — Нейзидельскую башню. Увидев это, Удино активизировал свои действия. Постоянно наращивая натиск, он смял австрийцев и поставил их под перекрестный огонь. Поняв, что успех на правом фланге обеспечен, Наполеон отдал приказ Макдональду — в атаку.
104 орудия разом изрыгнули пламя, обрушив на австрийские позиции шквал огня и сметая все на своем пути. После этого удара вперед медленно двинулась 45-тысячная колонна. По всем расчетам ничто не должно было устоять перед этим тараном. Но австрийские солдаты 1809 года были уже не те, что в 1800 и 1805 годах. Жестоко побиваемые своими «учителями», они решили на этот раз показать, что кое-что все же запомнили из полученных уроков. Макдональд был встречен плотным огнем. Через некоторое время он потерял половину своих людей и вынужден был остановиться. Тогда со всех сторон австрийцы пошли в штыковую атаку, желая во что бы то ни стало довершить начатое дело. Макдональд отбивался умело, его солдаты отразили все атаки, к Наполеону полетел гонец с просьбой о подкреплении.
Тем не менее исход битвы уже четко вырисовывался.
Несмотря на свою храбрость, австрийцы терпели поражение на всех пунктах, а французы одерживали верх. Ваграм и Нейзидель были в руках Наполеона. Атака австрийцев против левого фланга французов не удалась. Они были вынуждены ретироваться. На правом фланге Даву продолжал теснить корпус Розенберга, который после упорного сопротивления начал отступление на Бокфлис. Столь же упорно оборонялся корпус Гогенцоллер-на, непрерывно атакованный войсками Удино, но отход Розенберга заставил его начать отступление к Зейрингу. Единственный пункт, который австрийцы еще удерживали в своих руках, — был Адеркла. Бернадот штурмовал его постоянно, но безуспешно. Однако это было лишь делом времени.
Удар колонны Макдональда был все же сокрушительным. Прибывший к Зюссенбрунну Карл, не имея возможности подкрепить свой центр ввиду отсутствия резерва, понял, что удержать позиции у Нейзиделя уже не удастся. Колонна Макдональда, подкрепленная новыми силами, опять двинулась вперед. Эрцгерцог приказал начать отступление на всем фронте, битва была проиграна.
Около 16 часов на поле боя неожиданно появился Иоанн, но, оценив ситуацию, не вступая в бой, повернул обратно. К 21 часу двухдневное сражение у Ваграма закончилось. Наполеон не преследовал противника, и австрийские войска отошли, сохранив боеспособность.
Потери обеих сторон в этой битве были огромны. Французы потеряли примерно 27 000 человек убитыми, пленными и ранеными, 18 генералов, 12 знамен, 11 орудий. Австрийские потери составили 32 000 человек, 9 орудий, 1 знамя.
С точки зрения военного искусства, сражение при Ваграме было подготовлено и проведено Наполеоном артистически. В ходе боя он применил новинку — удар тараном Макдональда. И все-таки Ваграм был совсем не похож ни на Аустерлиц, ни на Иену. Австрийская армия не была ни уничтожена, ни сокрушена. Она отступила в полном порядке и, вероятно, через некоторое время смогла бы снова ввязаться в битву такого же масштаба. А Наполеон уже чувствовал, что победа одержана ценой огромного напряжения сил и что ему было бы крайне тяжело идти еще на одно столь же ожесточенное сражение.
Император шумно праздновал победу. Бертье был пожалован титул князя Ваграма, Даву — князя Экмюля, Массена — князя Эсслингенского. Макдональд, Мармон и Удино получили звание маршала.