Битка код Ашперна (или битка код Ашперн-Еслинга) започела је 21. маја 1809. у 14:30. Почетни и лоше координисани аустријски напади против Ашперна и према југу нису успели, али Карло је остајао упоран, па су некако успели да заузму цело село, да би онда изгубили источни део. Аустријанци нису нападали Еслинг до 18:00, јер су четврта и пета колона имали дужу путању да стигну на време. Французи су успешно одбијали нападе код Еслинга целога 21. маја. Борба је започела до 22. маја у 3:00 ујутро и Французи су за четири сата повратили Ашперн. Наполеон је до тада имао 71.000 војника и 152 топа на обе стране реке, али Аустријанци су још увек били јако бројчано надмоћнији. Наполеон је онда започео масивни напад на аустријски ценатар да би добио времена за прелазак 3. корпуса преко Дунава. Жан Лан је напредовао са три пешадијске дивизије око миљу, али надвојвода Карло је личним хероизмом испирисао напад на Французе и њеихово врађање. До 9:00 француски мостобран је био разбијен, а Карло је сат времена касније започео масивни напад у коме је заузео Ашперн. Неколико сати касније Аустријанци су заузели и Еслинг. Наполеон је на то послао Империјалну гарду под командом Жана Рапа, који је напао Аустријанце у Еслингу и истерао их одатле. Наполеон му то није био наредио. Аустријанци су започели са артиљеријском ватром, а Французи су се онда повукли на острво Лобау. Надвојвода Карло је био први који је поразио Наполеона у бици.