Den andre punerkrig brøt ut i 218 f.Kr. etter at Hannibal hadde ledet et angrep mot Saguntum i Hispania, som var en av Romerrepublikkens allierte. Etter å ha besatt Saguntum la han ut mot Roma i spissen for en hær som også omfattet krigselefanter. Fra Iberia krysset de Pyreneene, fortsatte over Alpene og angrep Italia nordfra. De første par årene etter inntoget i Italia vant Hannibal og hans menn spektakulære seire over romerne ved Trebia, Trasimene og Cannae. Hannibal var eksepsjonelt dyktig til å analysere sine egne og motstandernes respektive styrker og svakheter, og planla slagene deretter. Takket være sin strategiske kløkt lyktes han i å erobre en rekke av italienske byer som støttet Romerrepublikken. Hannibals styrker okkuperte det meste av det sørlige Italia i 15 år, men klarte ikke å vinne en endelig seier over Roma, ettersom de romerske styrkene under ledelse av Fabius Maximus lekte en katt-og-mus-lek der de unngikk store trefninger, men påførte kartagerne stadige, mindre tap og holdt dem i sjakk slik at de ikke fikk anledning til å skaffe seg forsyninger. Denne typen utmattelseskrig har senere blitt kjent som «fabiansk strategi». Da Scipio Africanus satte inn en mot-invasjon i Nord-Afrika ble Hannibal tvunget til å vende tilbake til Kartago. Scipio Africanus' tropper beseiret den kartagenske hæren i 202 f.Kr., i slaget ved Zama like utenfor Kartago. Scipio hadde i forveien lyktes i å drive Hannibals bror Hasdrubal, ut av Den iberiske halvøy. Scipio hadde gjennom lang tid studert Hannibals taktikk slik at han kunne klekke ut sin egen strategi; slik lyktes han i å beseire Romas fremste fiende.