第二次布匿战争从公元前 218 年持续到公元前 201 年,是公元前 3 世纪西地中海的两个主要大国迦太基和罗马之间发生的三场战争中的第二场。十七年来,这两个国家为争夺霸权而斗争,主要是在意大利和伊比利亚,但也在西西里岛和撒丁岛,以及战争即将结束时的北非。在双方都遭受了巨大的物质和人力损失之后,迦太基人被击败了。马其顿、锡拉丘兹和几个努米底亚王国被卷入战斗;伊比利亚和高卢军队在双方交战。战争期间有三个主要的军事战场:意大利,迦太基将军汉尼拔多次击败罗马军团,偶尔在西西里岛、撒丁岛和希腊进行辅助战役;伊比利亚,汉尼拔的弟弟哈斯德鲁巴尔在伊比利亚保卫迦太基殖民城市,但在移居意大利之前取得了不同程度的成功;和决定战争的非洲。这场战争是自公元前 390 年布伦努斯洗劫罗马以来最接近罗马国家走向毁灭的战争,直到 5 世纪它才再次受到毁灭的威胁。
公元前 219 年,汉尼拔围攻、占领并洗劫了亲罗马的城市萨贡图姆,促使罗马在公元前 218 年春天对迦太基宣战。那一年,汉尼拔将他的军队从伊比利亚陆路行进,穿过高卢,越过阿尔卑斯山到达西萨尔皮高卢(现代意大利北部),这让罗马人感到惊讶。在高卢盟友的支持下,他在特雷比亚 (218) 和特拉西梅内 (217) 的战斗中取得了对罗马人的压倒性胜利。 216 年,汉尼拔移居意大利南部,在坎尼战役中再次击败了罗马人,在那里他歼灭了罗马人有史以来集结的最大军队。
在不到两年的时间里,超过 120,000 名罗马军队阵亡或被俘后,罗马的许多意大利盟友,尤其是卡普阿,叛逃到迦太基,让汉尼拔的盟友控制了意大利南部的大部分地区。随着锡拉丘兹和马其顿在坎尼之后加入迦太基一方,冲突蔓延开来。公元前 215 年至 210 年间,迦太基人试图夺取罗马人控制的西西里岛和撒丁岛,但没有成功。
罗马人采取了激烈的措施来组建新的军团,招募奴隶、罪犯和那些不符合通常财产资格的人,从而大大增加了他们武装起来的人数。在接下来的十年里,意大利南部的战争仍在继续,罗马军队缓慢地重新夺回了伊比利亚东北部的大部分内陆地区,而迦太基人一再试图减少它,但未能成功。
公元前 211 年,罗马人在伊比利亚发动进攻并被彻底击败,同时保持对东北部的控制。公元前 209 年,新任罗马指挥官 Publius Scipio 占领了迦太基新星半岛,这是迦太基半岛的主要基地。公元前 208 年,西庇阿击败了哈斯德鲁巴尔,尽管哈斯德鲁巴尔能够在公元前 207 年春天将他的大部分部队转移到高卢,然后是意大利北部。这次新的迦太基入侵在 Metaurus 战役中被击败。
在 206 年的伊利帕战役中,西庇阿永久地结束了迦太基人在伊比利亚的存在。西庇阿随后于 204 年入侵迦太基非洲,迫使迦太基参议院从意大利召回汉尼拔的军队。战争的最后交战发生在 202 年的扎马战役中,西庇阿和汉尼拔的军队之间发生了战争,导致汉尼拔战败,迦太基要求和平。
强加给迦太基人的和平条约剥夺了他们所有的海外领土,以及他们的一些非洲领土。 50 年内支付 10,000 银他连得的赔偿金。迦太基被禁止在非洲以外发动战争,只有在罗马明确允许的情况下才能在非洲发动战争。许多高级迦太基人想要拒绝它,但汉尼拔强烈支持它,并于公元前 201 年春天被接受。从此以后,很明显迦太基在政治上从属于罗马。 Scipio 获得了胜利,并获得了 agnomen “Africanus”。由于对迦太基施加的和平条约的苛刻条款,“迦太基和平”一词在 20 世纪被创造出来,用来描述任何旨在永久削弱战争失败方的和平条约。