La Batalla de Zama se libró en el 202 a. C. cerca de Zama, ahora en Túnez, y marcó el final de la Segunda Guerra Púnica. Un ejército romano dirigido por Publius Cornelius Scipio, con el apoyo crucial del líder númida Masinissa, derrotó al ejército cartaginés dirigido por Aníbal.
Después de derrotar a los ejércitos cartagineses y númidas en las batallas de Útica y las Grandes Llanuras, Escipión impuso condiciones de paz a los cartagineses, que no tuvieron más remedio que aceptarlas. Al mismo tiempo, los cartagineses retiraron el ejército de Aníbal de Italia. Confiados en las fuerzas de Aníbal, los cartagineses rompieron el armisticio con Roma. Scipio y Hannibal se enfrentaron cerca de Zama Regia. Aníbal tenía 36.000 infantes frente a los 29.000 de Escipión. Un tercio del ejército de Aníbal eran levas de ciudadanos, y los romanos tenían 6.100 jinetes frente a los 4.000 de Cartago, ya que la mayor parte de la caballería númida que Aníbal había empleado con gran éxito en Italia se había pasado a los romanos.
Hannibal también empleó 80 elefantes de guerra. Los elefantes abrieron la batalla cargando contra el principal ejército romano. Los soldados de Scipio evitaron a los elefantes abriendo sus filas y luego los expulsaron con misiles. Posteriormente, la caballería romana y númida derrotó a la caballería cartaginesa y los persiguió fuera del campo de batalla. La primera línea de mercenarios de Hannibal atacó a la infantería de Scipio y fue derrotada. La segunda línea de levas ciudadanas y los restos de los mercenarios asaltaron e infligieron grandes pérdidas a la primera línea romana. La segunda línea romana se unió a la lucha y rechazó el asalto cartaginés. La tercera línea de veteranos de Aníbal, reforzada por las levas de ciudadanos y mercenarios, se enfrentó al ejército romano, que había sido redesplegado en una sola línea. El combate fue feroz y parejo. Finalmente, la caballería de Scipio regresó a la batalla y atacó al ejército de Aníbal por la retaguardia, derrotándolo y destruyéndolo.
Los cartagineses perdieron 20.00025.000 muertos y 8.50020.000 capturados. Escipión perdió 4.000-5.000 hombres, y murieron 1.500-2.500 romanos y 2.500 númidas. Derrotada en su tierra natal, la élite gobernante cartaginesa pidió la paz y aceptó términos humillantes, poniendo fin a la guerra de 17 años.
La Segunda Guerra Púnica, que duró del 218 al 201 a. C., fue la segunda de las tres guerras libradas entre Cartago y Roma, las dos principales potencias del Mediterráneo occidental en el siglo III a. Durante diecisiete años, los dos estados lucharon por la supremacía, principalmente en Italia e Iberia, pero también en las islas de Sicilia y Cerdeña y, hacia el final de la guerra, en el norte de África. Tras inmensas pérdidas materiales y humanas en ambos bandos, los cartagineses fueron derrotados. Macedonia, Siracusa y varios reinos númidas se vieron envueltos en la lucha; y las fuerzas ibéricas y galas lucharon en ambos lados. Hubo tres teatros militares principales durante la guerra: Italia, donde el general cartaginés Aníbal derrotó repetidamente a las legiones romanas, con campañas subsidiarias ocasionales en Sicilia, Cerdeña y Grecia; Iberia, donde Asdrúbal, un hermano menor de Aníbal, defendió las ciudades coloniales cartaginesas con un éxito desigual hasta trasladarse a Italia; y África, donde se decidió la guerra. La guerra fue la más cercana desde el saqueo de Roma por Brennus en 390 a. C. que el estado romano llegó a la destrucción, y no volvería a estar amenazado de destrucción hasta el siglo V.
En el 219 a. C., Aníbal sitió, capturó y saqueó la ciudad pro-romana de Sagunto, lo que provocó una declaración de guerra romana a Cartago en la primavera del 218 a. C. Ese año, Aníbal sorprendió a los romanos al hacer marchar a su ejército por tierra desde Iberia, a través de la Galia y sobre los Alpes hasta la Galia Cisalpina (actual norte de Italia). Reforzado por aliados galos, obtuvo aplastantes victorias sobre los romanos en las batallas de Trebia (218) y el lago Trasimeno (217). Al mudarse al sur de Italia en 216, Aníbal derrotó a los romanos nuevamente en la batalla de Cannas, donde aniquiló al ejército más grande que los romanos jamás habían reunido.
Después de la muerte o captura de más de 120 000 soldados romanos en menos de dos años, muchos de los aliados italianos de Roma, especialmente Capua, desertaron a Cartago, lo que les dio a los aliados de Aníbal el control de gran parte del sur de Italia. Cuando Siracusa y Macedonia se unieron al bando cartaginés después de Cannas, el conflicto se extendió. Entre 215 y 210 a. C., los cartagineses intentaron capturar Sicilia y Cerdeña, controladas por los romanos, pero no tuvieron éxito.
Los romanos tomaron medidas drásticas para levantar nuevas legiones, reclutando esclavos, criminales y aquellos que no cumplían con los requisitos habituales de propiedad y aumentando enormemente el número de hombres que tenían bajo las armas. Durante la próxima década, la guerra en el sur de Italia continuó, con los ejércitos romanos recuperando lentamente la mayor parte del interior en el noreste de Iberia y los cartagineses intentaron repetidamente reducirlo sin éxito.
En el 211 a. C., los romanos tomaron la ofensiva en Iberia y fueron derrotados contundentemente, aunque mantuvieron su dominio en el noreste. En el 209 a. C., el nuevo comandante romano Publio Escipión capturó Carthago Nova, la principal base cartaginesa en la península. En 208 a. C. Escipión derrotó a Asdrúbal, aunque Asdrúbal pudo trasladar la mayoría de sus tropas a la Galia y luego al norte de Italia en la primavera de 207 a. Esta nueva invasión cartaginesa fue derrotada en la Batalla de Metaurus.
En la batalla de Ilipa en 206, Escipión puso fin de forma permanente a la presencia cartaginesa en Iberia. Luego, Escipión invadió el África cartaginesa en 204, lo que obligó al Senado cartaginés a retirar el ejército de Aníbal de Italia. El enfrentamiento final de la guerra tuvo lugar entre los ejércitos de Escipión y Aníbal en la Batalla de Zama en 202 y resultó en la derrota de Aníbal y en que Cartago pidiera la paz.
El tratado de paz impuesto a los cartagineses los despojó de todos sus territorios de ultramar y de algunos africanos. Se pagaría una indemnización de 10.000 talentos de plata durante 50 años. A Cartago se le prohibió hacer la guerra fuera de África, y en África solo con el permiso expreso de Roma. Muchos cartagineses de alto rango querían rechazarlo, pero Aníbal se pronunció fuertemente a su favor y fue aceptado en la primavera de 201 a. A partir de entonces quedó claro que Cartago estaba políticamente subordinada a Roma. Escipión obtuvo un triunfo y recibió el agnomen "Africanus". Debido a los duros términos del tratado de paz impuesto a Cartago, el término "paz cartaginesa" se acuñó en el siglo XX para describir cualquier tratado de paz con términos diseñados para paralizar permanentemente al lado perdedor de una guerra.