Al comienzo de la campaña, Napoleón, con la Gran Armada, había tomado la ruta del Tirol, remontando los ríos Inn e Isar; derrotó al archiduque Carlos en Eggmühl y lo empujó, en Ratisbona —que tomó al asalto—, al otro lado del Danubio y hacia las montañas de Bohemia; de este modo se había interpuesto entre el ejército austríaco y la capital; luego, tras destacar a Davout con 40.000 hombres para entretener al general austríaco, se dirigió Danubio abajo y se enseñoreó de Viena; mientras tanto, los generales de Napoleón, Eugène Beauharnais y Macdonald, avanzaban victoriosamente desde el lado italiano por Dalmacia, Carniola y el valle del Mur —donde Jellachich fue severamente derrotado— para reunirse con su comandante en jefe.

Entretanto, el archiduque Carlos, que desde su derrota en Eggmühl se había movido lentamente por la ribera septentrional del Danubio aguas abajo —con la esperanza de hallar una ocasión propicia para un combate prometedor y salvar al Imperio justo ante las puertas de la capital—, tomó posición con su ejército en el Bisamberg, frente a la isla Lobau y otro pequeño islote, donde el Danubio se divide en cuatro brazos.

El archiduque se hallaba al frente de 100.000 hombres y esperaba de un momento a otro reunirse con los 40.000 de su hermano, el archiduque Juan, que habrían ascendido a 60.000 si éste, como se le había ordenado expresamente, se hubiera unido con Kolowrat en Linz y hubiera ocupado así una posición dominante en la retaguardia y sobre la principal línea de comunicaciones de Napoleón.

Napoleón había concentrado bajo su mando directo 80.000 soldados excelentes y listos para el combate, incluidos la Guardia Imperial y la caballería de reserva de Bessières, y se proponía cruzar el Danubio y librar batalla al archiduque Carlos con la esperanza de aniquilarlo antes de que llegaran sus refuerzos. Con este fin, tendió un puente muy sólido, sostenido por 68 grandes botes y 9 enormes balsas, desde la orilla derecha hasta la isla Lobau, y un puente más ligero de pontones desde la isla Lobau al Marchfeld, a medio camino entre las localidades de Aspern y Eßling; y en la mañana del 21 de mayo comenzó a cruzar sus tropas con la mayor rapidez y cuidado. El comandante austríaco observaba desde su posición en la altura aquella temeraria maniobra, mediante la cual el Emperador hacía pasar su inmenso ejército a través de una corriente ancha e impetuosa por un solo puente, que solo permitía un lento y paulatino desfile de soldados de todas las armas por su largo y angosto paso —difícil para la caballería, más difícil aún para la artillería— y que, en caso de verse obligado a retirarse, apenas ofrecía posibilidad alguna de poner a salvo al ejército. Al darse cuenta de ello el archiduque Carlos, decidió aprovechar de inmediato la ocasión de aniquilar a la mitad del ejército francés en la orilla septentrional, mientras la otra parte aún cruzaba el puente o se encontraba en la orilla meridional. Ordenó a Kolowrat, Nordmann y a los demás oficiales al mando que se hallaban aguas arriba que tuvieran preparados botes con material pesado y combustibles para, llegado el momento, destruir los puentes, y mantuvo a su gran ejército fuera de la vista; a su caballería y a los puestos avanzados les ordenó que opusieran resistencia solo en apariencia y luego retrocedieran ante el avance de los franceses, mandados por Masséna. A las doce del día, cuando más de 40.000 franceses se encontraban ya en la orilla septentrional, la maniobra del adversario había avanzado lo bastante como para que el archiduque Carlos tomara la iniciativa.

En ese momento se arrojó con 80.000 hombres, de ellos 14.000 de excelente caballería, y 288 cañones desde las alturas boscosas del Bisamberg sobre el enemigo, haciendo de las dos localidades de Aspern y Eßling, en los flancos de Napoleón, los puntos principales de su ataque; el espacio central entre ambos lugares, sólidamente construidos en su mayor parte con edificios de piedra y rodeados de tapias de jardín y numerosos cercados, fue ocupado por enormes baterías austríacas, cubiertas principalmente por la caballería y, en la retaguardia, por la reserva de infantería de Hohenzollern. La lucha durante los dos ataques de flanco fue terrible, el ímpetu de los asaltos y la tenacidad de la defensa casi sin parangón en la historia de la guerra. Ambas localidades cambiaron de manos varias veces y la artillería austríaca causó estragos tan espantosos en las líneas francesas que Napoleón ordenó un gran ataque de caballería para apoderarse a ser posible de las baterías. Los excelentes coraceros de la Guardia francesa cargaron con su acostumbrada impetuosa bravura, pusieron en fuga a la caballería austríaca y habrían conquistado los cañones; pero estos fueron rápidamente retirados, y la infantería formó cuadros que, como después en Waterloo, resistieron todos los intentos de romper su sólida formación, rechazando finalmente a la caballería y obligándola a retirarse, deshecha y diezmada, hacia sus propias líneas. Entretanto, Aspern fue tomada por los austríacos; su centro ganaba terreno lenta pero irresistiblemente, a pesar del heroísmo de los coraceros, que cargaban una y otra vez con número cada vez menor y solo ellos impedían que el enemigo rompiera las líneas francesas.

La noche trajo una breve interrupción de la lucha; pero los franceses habían sufrido una clara derrota en una batalla decisiva; su flanco izquierdo había sido envuelto, su centro rechazado casi hasta los puentes; y aunque Eßling en su ala derecha había sido mantenido por el valor de Lannes, estaba cercado por los austríacos, que dormían sobre las armas entre los franceses muertos y solo aguardaban el amanecer para atacar de nuevo.

Sin embargo, durante toda la noche nuevas tropas pasaron por los puentes y afluyeron al Marchfeld, y al amanecer Napoleón, después de todas las pérdidas del día anterior, contaba con 70.000 hombres en el campo de batalla, mientras Davout empezaba a cruzar al frente de otros 30.000. La batalla comenzó con renovados ataques a las dos localidades en disputa; Eßling fue tomada por los austríacos y Aspern reconquistada por los franceses. Ambos lugares fueron escenario de combates desesperados que duraron todo el día, y ambos cambiaron de manos varias veces en lucha cuerpo a cuerpo, pero quedaron finalmente en poder de los austríacos, que hacia el atardecer adelantaron su artillería más allá de ambas poblaciones y situaron su fuego cruzado eficazmente sobre la retaguardia francesa. Pero durante estos sangrientos combates, Napoleón, que gracias a grandes refuerzos se veía libre de la necesidad de actuar a la defensiva, recurrió a su maniobra favorita, un ataque arrollador contra el centro. Al frente de una enorme columna de más de 20.000 infantes, precedida por 200 cañones y seguida por poderosas fuerzas de caballería, hizo que Lannes y Oudinot atacaran directamente el centro austríaco, donde las líneas parecían más débiles, entre el ala izquierda de Hohenzollern y la derecha de Rosenberg. Al principio este ataque impetuoso pareció coronarse por completo; las líneas austríacas fueron rotas y se abrió una enorme brecha entre Hohenzollern y Rosenberg, en la que la caballería penetró con terrible ímpetu y se abrió paso limpiamente hasta las reservas del príncipe de Reuss, situadas muy a retaguardia. Ya corría el rumor de que la batalla estaba perdida; pero el archiduque Carlos estuvo a la altura de la difícil situación; los granaderos de la reserva fueron traídos a paso de carga y formados en cuadros a modo de tablero de ajedrez; los numerosos dragones del príncipe de Liechtenstein acudieron al galope, y con la bandera del regimiento de Zach en la mano, el valiente príncipe reanudó el combate.

La gigantesca columna de Lannes no pudo seguir avanzando, sino que fue detenida y empezó un tiroteo con los cuadros; incapaz de desplegarse, fue acribillada por el fuego concentrado de las baterías a media distancia de tiro de mosquete. En vano la caballería se lanzó contra las bayonetas de los cuadros, pero ninguno vaciló ni fue roto, hasta que por fin los dragones austríacos de la reserva irrumpieron con grandes gritos y atacaron a su vez a los coraceros franceses, los dispersaron, los arrojaron en desorden sobre su infantería y completaron la confusión. Inmediatamente después de este revés, Hohenzollern, con 6 regimientos de granaderos húngaros, rompió las líneas francesas por el lado derecho del centro y empujó a todo cuanto tenía delante hasta más allá de Eßling, la cual, junto con Aspern, fue definitivamente conquistada por los austríacos. Mientras el centro austríaco empujaba ahora ante sí al ejército francés en plena retirada hacia la isla Lobau, pese a los esfuerzos sin ejemplo de éste, las baterías austríacas de aquellas localidades sometieron los puentes a un fuego cruzado devastador, en el que cada disparo causaba estragos en las masas apiñadas de hombres y caballos.

Para empeorar aún más la peligrosa situación de los franceses, entretanto el puente que unía la isla Lobau con la orilla meridional fue destruido por los brulotes y balsas austríacos, haciendo imposible por el momento toda escapatoria de la isla para los franceses. Sin embargo, la firmeza sin ejemplo de la retaguardia francesa mantuvo a raya a los austríacos, hasta que cerca de medianoche, después de que el último enemigo se hubo retirado del campo de batalla a la isla, el trueno de las baterías austríacas enmudeció y los artilleros agotados, completamente exhaustos por los esfuerzos de aquella jornada sin par y gloriosa, se quedaron dormidos junto a sus cañones.

7.000 franceses fueron enterrados por los vencedores en el campo de batalla; 29.793 fueron llevados a Viena como heridos o prisioneros. Lannes y Saint-Hilaire resultaron heridos de muerte y fallecieron pocos días después. Por parte de los austríacos, cayeron 87 oficiales superiores y 4.200 soldados, además de 16.300 heridos. Pero la victoria alcanzada directamente ante las puertas y casi a la vista de la capital fue completa; el enemigo, quebrantado, derrotado y desmoralizado, se hallaba apiñado en la pequeña isla Lobau, y si el archiduque Juan, conforme a la orden recibida, hubiera aparecido en la mañana siguiente a la derrota de Aspern con 60.000 hombres de tropas frescas en la retaguardia de los franceses, el resultado habría sido fácil de prever.

Pero la hora de Napoleón no había llegado aún, y los pueblos tuvieron que sufrir todavía cuatro años más, antes de que la caída definitiva del coloso guerrero en los campos de batalla de Leipzig y Waterloo les devolviera su libertad perdida.