公元前216年春,汉尼拔主动出击,夺取了阿普利亚平原上的大型补给基地坎尼(Cannae)。
通过占领坎尼,汉尼拔将自己置于罗马人与其重要补给来源之间。
当罗马元老院在公元前216年恢复执政官选举时,他们任命盖乌斯·特伦提乌斯·瓦罗(Gaius Terentius Varro)和卢修斯·艾米利乌斯·保卢斯(Lucius Aemilius Paullus)为执政官。
与此同时,罗马人希望通过单纯的力量和人数获得胜利,组建了一支前所未有的大军,有人估计人数达到10万,但更可能在5万到8万之间。
罗马人及其盟军决心与汉尼拔对抗,向南 marched 至阿普利亚。
他们最终在奥菲杜斯河(Aufidus River)左岸找到了汉尼拔,并在距离其10公里(6英里)处扎营。
在这次战斗中,两支军队合并成一支,执政官必须每天轮流指挥。
根据利维(Livy)的记载,瓦罗是一位鲁莽而傲慢的人,而在战斗当天轮到他指挥。
这一记载可能对瓦罗有偏见,因为其主要来源波利比乌斯(Polybius)是保卢斯的贵族家庭的支持者,而瓦罗则不太显赫。
一些历史学家认为,军队的庞大规模要求两位将军分别指挥一翼。
这一理论得到了支持,因为在战斗后瓦罗幸存并被元老院赦免,这在他作为唯一负责的指挥官的情况下是很奇怪的。
汉尼拔利用罗马人急于作战的心理,引诱他们陷入陷阱,采用包围战术。
这一战术通过缩小作战区域消除了罗马人的人数优势。
汉尼拔将他最不可靠的步兵布置在中央,呈半圆形向罗马军队弯曲。
将他们置于两翼前方使他们有退路,诱使罗马军队跟随,而两翼的骑兵则与罗马骑兵交战。
汉尼拔的两翼由高卢(Gallic)和努米底亚(Numidian)骑兵组成。
罗马军团强行穿过汉尼拔的弱中心,但两翼的利比亚雇佣兵在这一动作中围住了罗马的侧翼。
汉尼拔的骑兵攻击势不可挡。汉尼拔的首席骑兵指挥官马哈巴尔(Maharbal)指挥右侧的机动努米底亚骑兵,打垮了与之对抗的罗马骑兵。
汉尼拔的伊比利亚(Iberian)和高卢重骑兵在左侧,由哈诺(Hanno)指挥,击败了罗马重骑兵,随后卡尔塔戈重骑兵与努米底亚骑兵从后方袭击罗马军团。
结果,罗马军队被完全包围,毫无逃脱的可能。
---
由于这些出色的战术,汉尼拔成功包围并消灭了敌人的绝大部分,尽管他的兵力不足。
根据不同的来源,估计有5万到7万名罗马士兵被杀或俘获。
其中阵亡者包括罗马执政官卢修斯·艾米利乌斯·保卢斯(Lucius Aemilius Paullus)、前一年任职的两位执政官、两位财务官、48名军事 Tribune 中的29名以及额外的80名参议员。
在罗马元老院最多只有300人的情况下,这占到了治理机构的25%到30%。
这使得这场战役成为古罗马历史上最具灾难性的失败之一,也是人类历史上单日伤亡人数最多的血战之一。
坎尼(Cannae)之后,罗马人对与汉尼拔展开决战非常犹豫,更愿意通过消耗战削弱他,依赖内部线、补给和人力的优势。
因此,汉尼拔在战争的剩余时间里没有再在意大利进行重大战斗。