Le 21, Napoléon reçut une dépêche de Davout qui parlait d'affrontements majeurs près de Teugen-Hausen. Davout conserva ses positions et malgré l'envoi de renforts, environ français affrontaient autrichiens. Lorsque Napoléon apprit finalement que Charles ne se retirait pas vers l'est, il réaligna l'axe de la Grande Armée dans une opération connue sous le nom de « manœuvre de Landshut ». Toutes les forces françaises disponibles, à l'exception des soldats de Bessières qui pourchassaient Hiller, se précipitèrent contre Eckmühl dans une nouvelle tentative pour encercler les Autrichiens et soulager leurs camarades assiégés. Le 22 avril, Charles avait laissé hommes sous le commandement de Rosenberg et Hohenzollern pour attaquer Davout et Lefebvre tandis qu'il avait détaché deux corps commandés par Kollowrat et Liechtenstein pour s'emparer de la rive de l'Abbach. À , cependant, le son du canon au sud pouvait être entendu annonçant l'arrivée de Napoléon. Davout ordonna immédiatement une attaque générale sur l'ensemble de la ligne en dépit de son infériorité numérique. Les renforts de Napoléon décimèrent le flanc gauche autrichien. La bataille d'Eckmühl se termina par une large victoire française et Charles décida de se retirer au-delà du Danube vers Ratisbonne. Napoléon lança ensuite Masséna pour reprendre Straubing à l'est tandis que le reste de l'armée poursuivit les Autrichiens en déroute. Les Français reprirent Ratisbonne après une charge héroïque menée par Lannes mais la grande majorité des forces autrichiennes parvint à se retirer en Bohême. Napoléon tourna ensuite son attention au sud vers Vienne où il affronta plusieurs fois les forces de Hiller comme lors de la bataille d'Ebersberg le 3 mai. Dix jours plus tard, la capitale autrichienne tomba pour la deuxième fois en quatre ans.