罗马人统一了意大利之后,第一件事便是建一支海军(罗马人只善于陆战,海战则打不过迦太基人)。可是罗马人不会造船,一开始就打了几个败仗,罗马人的船大多数都被迦太基人的战舰撞翻了,连上对方的船混战都没有机会。不过他们有幸找到了一艘搁浅的迦太基战舰,用它建了许多仿制品,一支海军很快就建起来了(史书估计一开始罗马人大约有十二到十六艘战舰,所谓希腊的tireme,还有数艘货船)。
第二件事就是攻击迦太基。迦太基人是腓尼基人的后裔,腓尼基人在地中海沿岸建了许多殖民地,突尼斯就是其中一个。迦太基人之后在此建造了一个城市和军港,然后又征服了大半个西班牙,成了所谓迦太基王国,对罗马构成极大的威胁;再加上迦太基人拥有科西嘉岛西西里和萨丁岛,有点类似英国和法国中间的距离,攻击意大利简直是轻而易举,因此罗马人主动采取攻势攻击迦太基。不幸的是有许多罗马人晕船(类似中国的赤壁之战,曹军不擅水战),再加上迦太基人战舰优良而且水手经验丰富,要不是罗马人在西西里海岸布置了许多投石机,罗马人辛辛苦苦建的海军就要全军覆没了。最后双方达成协议,迦太基把科西嘉岛和萨丁岛让给罗马人,罗马人每年付给迦太基人岁钱。迦太基人知道这是不平等的协议,但是迦太基本土那年发生蝗灾,因此必须筹款赈灾。
第一次布匿战争双方战平。但迦太基本土战争并没有停,主要因为在第一次布匿战争时迦太基雇的雇佣军因粮饷不齐而反叛,锯子之战(之所以叫锯子之战是因为战场在一个象锯子的峡谷里)被汉尼拔的父亲包围,五万雇佣军被全歼。没过多长时间汉尼拔的父亲便死了(有可能病死也有可能因宫廷争斗而被毒死)。汉尼拔本人积极备战准备讨伐罗马。公元前148年8月哈尼拔率四万名步兵两万名骑兵和四十头战象进攻意大利。
那时候进攻意大利有三个途径:一是从西西里走,很快,但罗马人已经在那里布下了四个军团(一个军团大约四千到六千人,总共起来约有两万人),只能强行突破,非常艰难。另一条路是从海路走,但:一,一艘船装不了多少人;二,罗马人的舰队已经封锁了地中海,也只能强行突破。第三路是绕道西班牙穿过阿尔卑斯山从意大利顶部直接攻击罗马,但在那时穿越阿尔卑斯山被认为是不可能的,汉尼拔却斗胆决定走第三条路。汉尼拔的军队还没有到阿尔卑斯山就遭到当地的凯尔特人的袭击,到了阿尔卑斯山就更是如此,几乎天天都被居住在高山的高卢人袭击,有许多人活活摔死在峡谷里,等到穿越阿尔卑斯山,汉尼拔只剩下两万步兵六千骑兵和几头战象(一说只剩下一头战象)。罗马人当然大吃一惊,急忙命令全意大利能召集到的部队都过来保卫首都。汉尼拔一下就打败了进攻的一万五千罗马人,随即又将六千罗马人消灭在西海岸。不过那时罗马人已经知道了汉尼拔的行踪,命令Gaius Flaminius行政官带领三万罗马人进攻汉尼拔。Lake Trasimene之战哈尼拔袭击Gaius Flaminius行政官,消灭了二万四千罗马人,行政官在仓皇逃命时被自己人推进了Trasimene湖淹死了,剩下六千人第二天投降汉尼拔。第三天汉尼拔用同样的方式歼灭了四千罗马援军。歼灭了这么多罗马人他自己仅仅伤亡了四千人。
没过几个月汉尼拔已经离罗马不到三百二十里了。他手下也增了一万步兵。这时罗马人又召集了一支相当庞大的军队,大约八万到九万步兵还有一万骑兵,双方在Cannae会战。罗马人布好战斗队形(先是轻装步兵,然后是正规军,最后是重装兵兼预备队),把一万骑兵一分为二保护两翼,就进攻了。汉尼拔先派出六千骑兵大败罗马人右翼的五千骑兵,再派出战象和一小部分预备队击溃了罗马左翼骑兵。不过罗马人和迦太基人的比例大约是三比一,汉尼拔的中路有点抵挡不住。于是汉尼拔果断下令中路拼死抵挡,而把主要兵力放在两翼攻击罗马,逐渐包围了罗马人的两翼。罗马人一看不妙,急忙撤退,才发现汉尼拔的骑兵已将后路挡住,在战斗的最后几个小时,迦太基人每分钟平均消灭六百名罗马士兵,一直杀到黄昏,仅有一万二千罗马士兵突围逃到了附近的一个名字叫Canusium的小镇,其余全部被消灭。汉尼拔手下总共死了四千多人伤了万人;罗马人阵亡人数在七万六到九万之间。四十多个罗马将军死了二十六个,十多面罗马大旗成了迦太基人的战利品,罗马人主帅Lucius Aemilius Paullus阵亡。罗马城哀悼一天,城里几乎每家都有人阵亡。
然而汉尼拔始终没有实力拿下罗马,迦太基派来的援军也被罗马人击败,再加上Scipio 进攻迦太基本土,汉尼拔被迫返回迦太基本土和罗马人作最后一战。Scipio围魏救赵迫使汉尼拔撤出意大利,汉尼拔长达十四年的意大利战争终于失败了。扎马之战Scipio采用汉尼拔在Cannae采用的战术,先击溃两翼再从中路合围消灭了汉尼拔的主力。汉尼拔死了三万七,Scipio仅仅伤亡一万多一点。汉尼拔败走叙利亚,当了Selecuid王国(亚历山大帝国下面的一个分支)的一个参谋,不过他的建议从来没有被采纳过。
过了十四年罗马人进攻叙利亚,汉尼拔服毒而死,而不是被罗马人生擒。他死之前迦太基早已被罗马人在第三次布匿战争中灭亡了。过了两千两百年,也就是1985年,罗马市长和突尼斯市长正式签订停战协议。据说在汉尼拔服毒之前Scipio曾与汉尼拔讲过一通话,Scipio问汉尼拔谁是古今最伟大的将领,汉尼拔开口就说是亚历山大大帝;Scipio又问谁是第二伟大的,汉尼拔说是皮诺士;Scipio再问汉尼拔为什么他不是最伟大的将领,汉尼拔有趣地回答:你之所以认为你是古今最伟大的将领是因为你打败了我,如果我打败了你的话,我才应该是古今最伟大的将领。