L’aile gauche française recule d'abord à travers le bois de Monceau jusqu'à Marchienne, mais là, les Impériaux, s'apercevant de la prise de Charleroi, hésitent. Kléber en profite pour les faire charger par ses troupes et les forcer à reculer.
Morlot, au centre, se replie sur Gosselies, tandis que Championnet doit abandonner Heppignies. Mais Jourdan amène des renforts et fait reprendre ce dernier village.
Le général de l'Armée impériale Beaulieu, qui l'a compris, arrive avec une nouvelle colonne ; mais Jourdan fait donner les réserves, et les Français, après les plus grands efforts, restent maîtres du village de Lambusart. Ainsi partout le combat s'est rétabli : la fin du jour approche. Beaulieu, apprenant, lui aussi, la prise de Charleroi, recule, et Cobourg se décide à ordonner une retraite générale sur Bruxelles.
La bataille eut lieu toute la journée sous un soleil brûlant, et, par endroits, au milieu de véritables incendies, les moissons ayant pris feu.
Le soir, de lassitude, le prince Cobourg abandonne le champ de bataille sur lequel il laisse 5 000 morts et blessés.
Le lendemain, les coalisés abandonnent la Belgique et battent en retraite dans le Saint-Empire romain germanique. Les Impériaux perdent définitivement le contrôle de cette région. Les Français prennent Bruxelles (10 juillet) et Anvers (27 juillet) alors que le corps expéditionnaire anglais est rembarqué. La dernière bataille sur le territoire de l'actuelle Belgique se déroulera à Sprimont le 18 septembre.