公元前216年8月2日上午9时,会战开始。罗马步兵首先猛攻迦太基军的突出步兵。此时迦太基军的中央方阵慢慢收缩,左、右、中各个方阵转变为凹字形阵势。瓦罗认为敌军方阵已无力抵抗,于是命令主力猛烈进攻。结果,罗马步兵从两侧向中央汇合进攻,队伍渐长。接着,迦太基的500轻装步兵突然投降,罗马军收缴了他们的长矛、盾牌,然后将他们安置在阵形后方。瓦罗见状以为胜利在握,便将预备队的全部投入了战斗。
此时,汉尼拔自己中央方阵被突破之前,命令步兵从侧面出击,使罗马军的中央方阵陷于被动。同时,他下令左右翼的步骑一起出击,从两翼包围敌人。汉尼拔左翼的重装骑兵迅速击垮罗马军右翼骑兵,然后分兵一路迂回敌后,直扑罗马军左翼骑兵的侧后,罗马军的左翼骑兵经不住前后夹击,迅速溃逃。汉尼拔立即向伏兵发出战斗信号,埋伏在树林中的迦太基军队,迅速切断了敌人的退路。罗马人阵势大乱,而迦太基骑兵以一部追击逃散的敌方骑兵,其他兵力则配合步兵合围罗马步兵。中午时分,东南强风刮起,面向东南的罗马步兵被风沙吹得不能睁开双眼。投射的箭石也因逆风速度减慢,力量减弱。迦太基士兵投射的箭石因为顺风而大大增强了杀伤效果。顿时,罗马士兵们秩序大乱,虽然人数众多,但能够使用武器的只有第一线少数士兵。而汉尼拔的军队无论是用远程兵器攻击,还是投枪、射箭、击石,几乎无一落空。与此同时,那500名迦太基降兵也趁机拔出短剑从后往前冲杀。此刻,插到罗马步兵后方的迦太基左翼骑兵也从背后冲杀过来。
坎尼战场上,迦太基军越战越勇,而罗马军四面被围。战到天黑,罗马军大约有7万人阵亡,罗马军队指挥官塞维利阿,执政官帕卢斯以及其他军官,全部惨死在战乱之中,瓦罗和370名骑兵仓皇逃出重围。
坎尼之战后,罗马重新实行费边的策略,避免决战积蓄力量,惩罚汉尼拔的同盟者,并切断汉尼拔的补给,消耗迦太基军队的实力。
公元前212~前213年,罗马军攻占卡普阿和叙拉古。罗马花费5年时间恢复元气,收复大片领土。两年之后,西庇阿被罗马任命为西班牙驻军指挥官,加紧攻击汉尼拔军后方。第二年,西庇阿攻占了迦太基人在西班牙的新迦太基城。至此,汉尼拔在意大利半岛的处境渐渐严峻,更糟糕的是,迦太基统治者怕汉尼拔权重而不援助。
公元前208年,汉尼拔之弟哈斯鲁拔率军沿当年汉尼拔的路线进入北意大利,后在翁布里亚境内的梅陶鲁斯河畔受到罗马军袭击,全军覆没。汉尼拔丧失援助,不得不退守意大利南端。此时,西庇阿发动新一轮攻势。公元前206年,迦太基人被彻底赶出了西班牙。
迦太基城遗址公元前202年秋,西庇阿与汉尼拔在扎玛城附近进行决战。汉尼拔按常规列队,而西庇阿不循常规,他把三线各部队重叠配置,中间留空道便于战象通过。当汉尼拔军战象冲到西庇阿军前时,西庇阿的一线部队突然鼓角齐鸣,战象受到惊吓,有的停滞不前,有的转身向自己的战阵冲去,还有被击伤后逃跑。西庇阿抓住时机,命令骑兵迂回包抄,同时将3线兵力集中起来,向汉尼拔军正面猛攻,最终取得胜利。汉尼拔军战死约2万人,汉尼拔逃脱。这是汉尼拔第一次也是最后一次战败。然后迦太基求和,接受了十分苛刻的条件:丧失了一切海外属土,赔款1万塔兰特,战舰只留10艘,其余全被凿毁。迦太基的海上霸主地位由此彻底丧失,而罗马成为西地中海的新霸主。
经过半个世纪,迦太基商业发展迅速,财富也迅速增加。罗马恐迦太基复兴,于是公元前149年进攻迦太基,第三次布匿战争爆发。
此时的罗马派执政官是孟尼留斯,他率8万步兵、4000骑兵、600艘战舰,从西西里渡海直达迦太基的重镇乌提卡。迦太基面对突袭,猝不及防,被迫向罗马求和。罗马要求迦太基交出全部武器,并且以300名儿童作为人质,更无理要求迦太基自毁城市,退居离海15千米外的内地。迦太基人忍无可忍,决定抵抗到底。
公元前149~前147年,罗马接连失利,直到前146年,罗马以饥饿围困迦太基,才突破城外防线。巷战进行了6天6夜,迦太基人死者达8、5万人。罗马元老院下令焚烧了迦太基城,迦太基城彻底被毁。持续118年的布匿战争,以迦太基的灭亡而告结束。
【战争简评】
布匿战争是罗马人征服地中海世界最为关键的战争,使罗马成为地中海的霸主,也是罗马共和国兴旺的一个重要转折点。一方面,布匿战争的胜利使罗马占领了欧、亚、非的广大地区,掠夺了大量奴隶和战利品,罗马变得空前强大和繁荣;另一方面,引起了罗马经济结构、阶级关系和道德风尚等领域的重大变化。这对罗马奴隶占有制社会内部阶级关系的变化、经济的发展以及地中海地区后来的历史命运,都产生了巨大影响。