A Batalha de Zama foi travada em 202 aC perto de Zama, agora na Tunísia, e marcou o fim da Segunda Guerra Púnica. Um exército romano liderado por Publius Cornelius Scipio, com apoio crucial do líder númida Masinissa, derrotou o exército cartaginês liderado por Aníbal.
Depois de derrotar os exércitos cartagineses e númidas nas batalhas de Utica e das Grandes Planícies, Cipião impôs termos de paz aos cartagineses, que não tiveram escolha a não ser aceitá-los. Ao mesmo tempo, os cartagineses chamaram de volta o exército de Aníbal da Itália. Confiantes nas forças de Aníbal, os cartagineses quebraram o armistício com Roma. Scipio e Hannibal se confrontaram perto de Zama Regia. Aníbal tinha 36.000 infantaria para 29.000 de Cipião. Um terço do exército de Aníbal era composto por cidadãos, e os romanos tinham 6.100 cavaleiros contra os 4.000 de Cartago, já que a maior parte da cavalaria númida que Aníbal empregou com grande sucesso na Itália havia desertado para os romanos.
Hannibal também empregou 80 elefantes de guerra. Os elefantes abriram a batalha atacando o principal exército romano. Os soldados de Cipião evitaram os elefantes abrindo suas fileiras e depois os expulsaram com mísseis. A cavalaria romana e númida posteriormente derrotou a cavalaria cartaginesa e os expulsou do campo de batalha. A primeira linha de mercenários de Aníbal atacou a infantaria de Cipião e foi derrotada. A segunda linha de impostos de cidadãos e os remanescentes dos mercenários atacaram e infligiram pesadas perdas na primeira linha romana. A segunda linha romana juntou-se à luta e repeliu o ataque cartaginês. A terceira linha de veteranos de Aníbal, reforçada pelas tropas de cidadãos e mercenários, enfrentou o exército romano, que havia sido redistribuído em uma única linha. O combate foi feroz e equilibrado. Finalmente, a cavalaria de Cipião retornou à batalha e atacou o exército de Aníbal pela retaguarda, derrotando-o e destruindo-o.
Os cartagineses perderam 20.00025.000 mortos e 8.50020.000 capturados. Cipião perdeu 4.0005.000 homens e 1.5002.500 romanos e 2.500 númidas foram mortos. Derrotada em sua terra natal, a elite governante cartaginesa pediu a paz e aceitou termos humilhantes, encerrando a guerra de 17 anos.
A Segunda Guerra Púnica, que durou de 218 a 201 aC, foi a segunda de três guerras travadas entre Cartago e Roma, as duas principais potências do Mediterrâneo ocidental no século III aC. Durante dezessete anos, os dois estados lutaram pela supremacia, principalmente na Itália e na Península Ibérica, mas também nas ilhas da Sicília e da Sardenha e, no final da guerra, no norte da África. Após imensas perdas materiais e humanas de ambos os lados, os cartagineses foram derrotados. Macedônia, Siracusa e vários reinos númidas foram atraídos para a luta; e as forças ibéricas e gaulesas lutaram em ambos os lados. Havia três teatros militares principais durante a guerra: Itália, onde o general cartaginês Aníbal derrotou repetidamente as legiões romanas, com campanhas subsidiárias ocasionais na Sicília, Sardenha e Grécia; Iberia, onde Asdrúbal, um irmão mais novo de Aníbal, defendeu as cidades coloniais cartaginesas com sucesso misto até se mudar para a Itália; e África, onde a guerra foi decidida. A guerra foi a mais próxima desde o saque de Roma por Breno em 390 aC que o estado romano chegou à destruição, e não seria ameaçado de destruição novamente até o século V.
Em 219 aC, Aníbal sitiou, capturou e saqueou a cidade pró-romana de Saguntum, levando a uma declaração romana de guerra a Cartago na primavera de 218 aC. Naquele ano, Aníbal surpreendeu os romanos ao marchar seu exército por terra da Ibéria, através da Gália e pelos Alpes até a Gália Cisalpina (atual norte da Itália). Reforçado por aliados gauleses, obteve vitórias esmagadoras sobre os romanos nas batalhas de Trébia (218) e do lago Trasimene (217). Movendo-se para o sul da Itália em 216, Aníbal derrotou os romanos novamente na Batalha de Canas, onde aniquilou o maior exército que os romanos já reuniram.
Após a morte ou captura de mais de 120.000 soldados romanos em menos de dois anos, muitos dos aliados italianos de Roma, principalmente Cápua, desertaram para Cartago, dando aos aliados de Aníbal o controle de grande parte do sul da Itália. Quando Siracusa e Macedônia se juntaram ao lado cartaginês depois de Canas, o conflito se espalhou. Entre 215 e 210 aC, os cartagineses tentaram capturar a Sicília e a Sardenha, controladas pelos romanos, mas não tiveram sucesso.
Os romanos tomaram medidas drásticas para levantar novas legiões, alistando escravos, criminosos e aqueles que não atendiam à qualificação de propriedade usual e aumentando enormemente o número de homens que tinham em armas. Na década seguinte, a guerra no sul da Itália continuou, com os exércitos romanos recuperando lentamente a maior parte do interior no nordeste da Península Ibérica e os cartagineses tentaram repetidamente e falharam em reduzi-la.
Em 211 aC, os romanos tomaram a ofensiva na Península Ibérica e foram derrotados decisivamente, mantendo seu domínio sobre o nordeste. Em 209 aC, o novo comandante romano Públio Cipião capturou Cartago Nova, a principal base cartaginesa na península. Em 208 aC Cipião derrotou Asdrúbal, embora Asdrúbal tenha conseguido mover a maioria de suas tropas para a Gália e depois para o norte da Itália na primavera de 207 aC. Esta nova invasão cartaginesa foi derrotada na Batalha do Metaurus.
Na Batalha de Ilipa, em 206, Cipião acabou definitivamente com a presença cartaginesa na Península Ibérica. Cipião então invadiu a África cartaginês em 204, obrigando o Senado cartaginês a retirar o exército de Aníbal da Itália. O confronto final da guerra ocorreu entre os exércitos de Cipião e Aníbal na Batalha de Zama em 202 e resultou na derrota de Aníbal e em Cartago pedindo a paz.
O tratado de paz imposto aos cartagineses despojou-os de todos os seus territórios ultramarinos e alguns africanos. Uma indenização de 10.000 talentos de prata deveria ser paga ao longo de 50 anos. Cartago foi proibida de fazer guerra fora da África e na África apenas com a permissão expressa de Roma. Muitos cartagineses seniores queriam rejeitá-lo, mas Aníbal falou fortemente a seu favor e foi aceito na primavera de 201 aC. A partir de então ficou claro que Cartago era politicamente subordinada a Roma. Cipião foi premiado com um triunfo e recebeu o agnomen "Africanus". Devido aos termos severos do tratado de paz imposto a Cartago, o termo "paz cartaginesa" foi cunhado no século 20 para descrever qualquer tratado de paz com termos projetados para prejudicar permanentemente o lado perdedor de uma guerra.