Hannibál Kr. e. 218-ban seregével és 37 harci elefántjával Hispániából a Pireneusokon és az Alpokon át Itáliába vonult. A római sereg visszavonulásra kényszerült, majd súlyos vereséget szenvedett Trebiánál (Kr. e. 218) és a Trasimenus-tónál (Kr. e. 217). A diktátorrá megválasztott Quintus Fabius Maximus Verrucosus a súlyos helyzetben az ellenfél erőinek meggyengítése érdekében halogató taktikát javasolt. Azonban az összecsapás hívei új ütközetet erőszakoltak ki: Kr. e. 216-ban Cannaenál a római hadsereg igen súlyos vereséget szenvedett. Hannibál előtt megnyílt az út Róma felé, de a város ostromáról lemondott. Időközben Karthágó oldalán hadba lépett Siracusa és Makedónia is, de a római sereg hadműveletei meggátolták aktív részvételüket. Az újjászervezett római hadsereg Scipio parancsnoksága alatt sikeres hadműveleteket folytatott Hispániában, és Kr. e. 209-ben elfoglalta a karthágóiak katonai szempontból egyik legfontosabb városát, Új-Karthágót. Ezzel egy időben a rómaiak Itáliában is sikereket értek el. Az utánpótlási lehetőségektől megfosztott Hannibál segítségére sietett öccse, Hasdrubal, azonban seregét a Metaurus folyónál a rómaiak szétverték (Kr. e. 207). A sikerek lehetőséget teremtettek arra, hogy Scipio serege partra szálljon Észak-Afrikában, Karthágó közelében. A karthágói tanács ekkor visszarendelte Hannibált Itáliából. Kr. e. 202-ben az észak-afrikai Zamánál lezajlott csatában Hannibál serege súlyos vereséget szenvedett. Kr. e. 201-ben Karthágó megalázó békét volt kénytelen kötni Rómával: elvesztette tengerentúli birtokait (Hispánia), nem viselhetett háborút Észak-Afrikában a római senatus beleegyezése nélkül, hatalmas hadisarc fizetésére kötelezték, a hadiflottát ki kellett szolgáltatnia a rómaiaknak.