È la seconda delle tre guerre che i romani combatterono contro i cartaginesi, che i romani chiamavano punici, adattamento latino del nome Poenikes utilizzato dai Greci per indicare i fenici e quindi i cartaginesi.
La seconda guerra punica ebbe come protagonista indiscusso Annibale, che nel 221 a.C. governava i territori cartaginesi di Spagna che giungevano fino al fiume Ebro. Per provocare i romani, Annibale espugnò la città di Sagunto, alleata di Roma, che subito dichiarò la guerra.
Il Cartaginese non attese lo scontro in Spagna ma, con un esercito di 50 mila fanti, 9000 cavalieri e 37 elefanti, passò in fretta i Pirenei e le Alpi cogliendo i romani impreparati. In appena due anni li sconfisse al Ticino e alla Trebbia (presso Piacenza, nel 218 a.C.), quindi al lago Trasimeno (217 a.C.). La via del Lazio era aperta, ma Annibale preferì dirigersi verso l'Italia meridionale, dove contava di attirare a sé i più importanti soci di Roma. A questo punto il dittatore Quinto Fabio Massimo (detto Cunctor, "il Temporeggiatore") adottò la tattica dell'attesa allo scopo di stancare il nemico ma alla fine del suo mandato i romani vollero passare all'attacco e subirono la disfatta di Canne (216 a.C.). Fu ripresa allora la tattica del Temporeggiatore e a niente valse il tentativo di Asdrubale, fratello di Annibale, di rompere l'isolamento: sconfitto presso il fiume Metauro (Pesaro) nel 207, Asdrubale morì in battaglia. Intanto il giovane condottiero Publio Cornelio Scipione, riconquistata la Spagna, portò la guerra in Africa (204 a.C.) costringendo Annibale a far ritorno in patria per subire la sconfitta di Zama.