Hannibal arriveerde in de heuvels buiten Herdonia na een reeks snelle marsen. Hij hoorde dat Fulvius bezig was te onderhandelen met de stad. Hij sloeg snel zijn kamp op, voordat Fulvius wist dat hij aangekomen was. Nadat Fulvius zijn legers klaar had staan om Hannibal aan te vallen, zette hij zijn Numidiërs in tegen de Romeinse linkervleugel, terwijl zijn zware cavalerie het kamp van de Romeinen aanviel, gecombineerd met een felle frontale aanval van Hannibal's infanterie.
Nadat de Romeinse linies de aanvallen aanvankelijk hadden weerstaan, raakten ze verward en gedemoraliseerd en sloegen op de vlucht. Fulvius' leger werd omsingeld en verslagen. Fulvius Centumalus werd gedood en achtergelaten op het veld. Hannibal vernietigde Herdonia omdat het zich niet loyaal had getoond.