La continua desconfianza entre Roma y Cartago condujo a nuevas hostilidades en la segunda guerra púnica, cuando Aníbal, un miembro de la familia noble cartaginesa, atacó Sagunto, una ciudad con vínculos diplomáticos con Roma. Aníbal preparó entonces un ejército en Iberia y, en el 218 a. C., cruzó los Alpes italianos con elefantes de guerra para invadir Italia. Asistido por las tropas galas, logró derrotar a los romanos en dos batallas en el mismo año y avanzar por la península. Continuando su marcha, se enfrentó a los romanos en años posteriores, uno de ellos en Cannas, una de las mayores derrotas de la historia romana.Después de Cannas, Aníbal obtuvo nuevas victorias y adquirió territorios en el sur de Italia, además de ganarse la lealtad de varios pueblos de Capua y Apulia. Además, logró forjar alianzas con antiguos aliados romanos, incluido Tarento, hacia el 212 a. C., así como con el rey de Siracusa y Filipo V de Macedonia. A pesar de haber firmado varias alianzas con las potencias italianas, la situación de Aníbal comenzó a desmoronarse en los años siguientes, especialmente por el cambio de táctica romana, que favoreció, más que batallas abiertas, la lucha en una guerra de desgaste. Como resultado, los romanos no solo retomaron gradualmente los territorios perdidos, sino que incluso saquearon Siracusa en 211 a. C., aplastaron una revuelta general en Sicilia e impidieron el avance cartaginés en Iberia mediante una serie de expediciones. Además, lograron destruir por completo al ejército cartaginés que había invadido Italia a través de los Alpes bajo Asdrúbal. Hacia el 204 a. C. debido a que aún no pudieron expulsar a Aníbal de Italia, los romanos lanzaron una expedición en África, con la intención de atacar Cartago. Tras derrotar a un ejército cartaginés, Aníbal se vio obligado a regresar a África donde se enfrentó a ellos en la batalla de Zama del 203 a. C., que terminó con una decisiva victoria romana. Esto llevó a Cartago a pedir la paz.