坎尼战役震动罗马全国,罗马人把所有17岁以上的公民征召入伍,又编成两个奴隶军团共同对敌。罗马人一方面与汉尼拔周旋拖延,另一方面派军进攻西班牙,终于使汉尼拔陷人困境。公元前205年,罗马33岁的年轻将领西庇阿率军渡海到北非迦太基本土,于是战场从意大利转到了迦太基。公元前202年秋,双方在扎玛城附近进行最后的决战。汉尼拔第一次也是最后一次在战场上被打败。次年,迦太基被迫与罗马订立了屈辱的“和约”:迦太基放弃非洲以外所有领土,除保留10艘舰船外,其余舰只全部交给罗马,赔款10000塔兰特。汉尼拔后因罗马人追捕而自杀。迦太基的海上霸主地位彻底被打败,罗马成了西地中海的霸主。
公元前241年3月,罗马的200艘战舰在伊干特群岛大败迦太基海军,迦太基不得不求和,赔款3200塔兰特,罗马取得了西西里及其他一些岛屿;后来又乘迦太基雇佣兵起义之机,出兵占领了科西嘉和撒丁尼亚两个岛屿。罗马取得第一次布匿战争的胜利,并掌握了地中海西部的制海权。
罗马人并没有满足于这有限的胜利,而迦太基也不甘心于已有的失败。公元前219年,迦太基的卓越统帅汉尼拔发兵攻占了归附罗马的萨贡托城,罗马出兵干涉,次年第二次布匿战争爆发(公元前218年—公元前202年)。汉尼拔审时度势,决定先发制人,于公元前218年春,亲率90000步兵、12000骑兵和37头战象,从西班牙出发,沿地中海疾步东进,绕过了罗马派去堵截他们的军队,翻越白雪皑皑的阿尔卑斯山口,如天兵天将般出现在意大利的波河平原,罗马人惊慌失措,屡战屡败。公元前217年,在特拉西美诺湖战役中,罗马4万大军几乎全军覆没,执政官阵亡。公元前216年夏,汉尼拔率5万余人与罗马执政官瓦罗率领的8万多罗马军队会战于坎尼,即著名的坎尼战役。汉尼拔事先了解到当地每天午后会刮东南风,于是指挥部队紧急转移,处于上风方向,并采用半月型战阵,把罗马军队卷入口袋之中,重重包围起来,最后全歼罗马军队。坎尼战役成为世界军事史上的第一个合围之战,显示了汉尼拔的卓越军事才能。
经过一系列交战,罗马军队取得了陆上作战的一些胜利,但迦太基在海上一直处于优势。但善于模仿的罗马人,以一艘搁浅的迦太基战舰为样板,在希腊人帮助下,建立了一支庞大的舰队。船只结构同迦太基人的一样,也是桨式战船,但罗马人制造了一种搭有尖钩的活动吊桥,将它钩到对方战舰的甲板上,这样不习水战的罗马人就可沿长板冲向敌船,在甲板上打一场陆地战,充分发挥了罗马陆军的战斗力。
迦太基(今突尼斯)是公元前9世纪腓尼基人在北非建立的殖民地。到公元前6世纪时,它已成为地中海的一大强国,拥有70万人口,相当庞大的陆军和地中海上最优秀的海军,版图囊括北非西部沿岸、西班牙南部、巴利阿里群岛、撒丁岛、科西嘉岛,和意大利半岛只有一峡之隔的西西里岛也大部分控制在迦太基手中。双方的称霸野心使战争的爆发不可避免。
公元前3世纪早期,罗马人成为意大利的霸主之后,企图继续扩张,以称霸地中海。与此同时,西部地中海的强国——北非的迦太基也在扩张海上势力。双方为争夺地中海西部统治权进行了一场著名的战争,其中包括三次大战。战争断断续续进行了一百多年,因为罗马人称腓尼基人为“布匿人”,所以史称“布匿战争”。
第一次布匿战争(公元前264年—公元前241年)缘起于“墨西拿事件”。公元前265年,西西里岛的墨西拿城邦发生雇佣兵起义,墨西拿向迦太基和罗马两方求救。迦太基率先出兵干预,占领了墨西拿。罗马统治者惟恐迦太基人独吞整个西西里,于是于次年派兵侵入西西里岛,由此揭开了第一次布匿战争的序幕。
在以后的半个世纪里,罗马人对迦太基的仇恨从未消逝。迦太基虽在军事上无力再与罗马竞争,但其商业发展迅速,物质财富迅速增加,这引起了罗马的妒忌,罗马于公元前149年向不设防的迦太基城和居民宣战。第三次布匿战争(公元前149年—公元前146年)实际上是罗马军团对已解除了武装的迦太基居民的一场屠杀。面对这突如其来的侵略,迦太基措手不及,只得向罗马求和。罗马提出,要迦太基交出全部武器和300名儿童作人质。当迦太基满足罗马这一条件后,罗马又无理要求迦太基毁掉城市,移居离海15公里以外的内地。忍无可忍的迎太基居民在悲壮气氛中同仇敌忾,守城3年。直到公元前146年,罗马以饥饿围困迦太基,才突破城外防线。残酷的巷战进行了6天6夜,最后许多迦太基人同庙宇同归于尽,战至死者达8.5万。原有60万人口的迦太基城,只剩下5万妇幼老残被卖为奴隶,罗马人在夷城之后,又深犁其土,种上庄稼。一座在古代世界曾经繁荣昌盛的城市就这样消失了。