13 мая Наполеон вступил в Вену. Но австрийский император отказался заключить мир. Тогда Наполеон решил форсировать Дунай. 17 мая французы захватили остров Лобау, а в ночь на 21 мая по понтонному мосту на левый берег переправились 33 тысячи солдат во главе с маршалами Данном и Массеной. Они овладели деревнями Асперн и Эсслинг.
В 4 часа дня французские войска на левом берегу были атакованы 88 тысячами австрийцев. Корпуса Ланна и Массены, получив подкрепления, увеличившие их силы до 60 тысяч, смогли удержать плацдарм, куда прибыл сам Наполеон. Но понтонный мост оказался разрушен австрийской артиллерией. Французы, оставшиеся у Асперна и Эсслинга, израсходовали все боеприпасы и к вечеру 22 мая стали отступать к реке, неся большие потери от артиллерийского огня противника. Ланн был смертельно ранен ядром, а Массене удалось ночью починить мост и отвести остатки своих войск на Лобау.
Поражение не сломило Наполеона. Он продолжал подготовку к форсированию Дуная, сосредоточив на Лобау значительные силы. Всего Наполеон имел от 150 до 170 тысяч солдат при 550–584 орудиях. Эрцгерцог Карл мог противопоставить ему 110-тысячную армию при 450 орудиях. Вечером 4 июля французы начали переправу. Корпус Удино сбил австрийские заслоны и захватил плацдарм у деревни Энцерсдорф. К утру 5 июля 100-тысячная французская армия была на левом берегу Дуная. В 9 часов войска Даву взяли Энцерсдорф. К этому времени сюда переправилась вся наполеоновская армия.
Эрцгерцог Карл встретил неприятеля на хорошо укрепленной Русбахской позиции. Он ожидал подхода армии эрцгерцога Иоанна, что уравняло бы австрийские силы с французскими. Однако в 8 часов вечера 5 июля корпуса Даву, Удино и Бернадота атаковали австрийские позиции у селений Нейзидель, Баумерсдорф и Ваграм. Атаки оказались неудачны. Войска Удино были отброшены за реку Русбах с большими потерями. Корпус Макдональда контратакой австрийских резервов во главе с Карлом был приведен в полное расстройство, причем его саксонская и итальянская дивизии, приняв друг друга за неприятеля, вели между собой жестокий бой. Только помощь французской кавалерии спасла армию Макдональда от разгрома.
На следующий день Карл попытался атаковать левый фланг французов и отрезать неприятеля от Дуная. Одновременно левое крыло австрийцев должно бьшо соединиться с армией эрцгерцога Иоанна и охватить правый фланг неприятеля. Наполеон, в свою очередь, наносил главный удар в центре, чтобы овладеть Ваграмом и Нейзиделем, прорвать фронт армии Карла и отрезать ее от армии Иоанна. В 4 часа утра левофланговые колонны австрийцев, пользуясь туманом, неожиданно атаковали корпус Даву. Наполеон ошибочно решил, что это подошли войска Иоанна, и бросил в контратаку два полка кирасир с конной артиллерией. Австрийцы были отброшены в исходное положение.
В 7 часов утра австрийцы начали основную атаку на своем правом фланге и заняли деревню Адерклаа, накануне покинутую корпусом Бернадота. Тот пытался контратаковать, но попал под перекрестный огонь и отступил с большими потерями. В 10 часов австрийцы сбили с позиции дивизию генерала Ж. Буде и были уже близки к тому, чтобы отрезать противника от переправ.
Наполеон тем временем сосредоточил в центре ударный 45-тысячный корпус с 104 орудиями под командованием Макдональда. Его поддерживали кирасиры и гвардейская кавалерия. В час дня Даву взял Нейзидельские высоты. Увидев французский флаг на Нейзидельской башне, Наполеон приказал Макдональду перейти в наступление. Однако эта атака была отражена с большими потерями. Но поражения австрийцев на обоих флангах предопределили исход сражения.
Потеряв Ваграм и Нейзидель и опасаясь новой атаки в центре, Карл начал отступление. В 4 часа вечера к месту боя подошла армия Иоанна, но, увидев общее отступление австрийских войск, повернула обратно. В битве при Ваграме каждая из сторон потеряла по 25 тысяч человек убитыми, ранеными и пленными. Французы лишились 12 знамен и 11 орудий, австрийцы — одного знамени и 9 орудий.
Ваграмское поражение вынудило Австрию подписать 14 октября 1809 года Шенбруннский мирный договор. Она вынуждена была, по требованию Наполеона, уступить России Тарнопольский уезд в Галиции, основную же часть этой провинции отдать союзному Франции Варшавскому герцогству; присоединиться к континентальной блокаде, уплатить большую контрибуцию и сократить свою армию до 150 тысяч человек.
После неудачи, постигшей Австрию, Александр I, сознавая гибельные последствия для России континентальной блокады и необходимость сокрушить Наполеона, попытался осенью 1811 года склонить к совместному выступлению против Франции прусского короля Фридриха Вильгельма III. 17 октября уже была подписана конвенция о военном союзе, согласно которой 200-тысячная русская и 80-тысячная прусская армии должны были дойти до Вислы раньше, чем там укрепятся французские войска. Русский император уже отдал распоряжение о сосредоточении 5 корпусов на западной границе. Однако прусский король в последний момент испугался новой войны с «врагом рода человечества», отказался ратифицировать конвенцию, а потом даже вступил в союз с Наполеоном. По этому поводу Александр написал Фридриху Вильгельму 1 марта 1812 года: «Лучше все-таки славный конец, чем жизнь в рабстве!»