陆战胜利,以及罗马海军遭遇重创,这下轮到得意忘形的迦太基人干了一件蠢事,他们解雇了斯巴达人军队(估计费用太高了...)。得到消息的罗马人大喜过望,两位经历海难的执政官率领重新建好的两百多艘战船扬帆起航,目标西西里岛。这次,罗马人攻陷巴勒莫。不知道是罗马海军倒霉还是这两位执政官运气差,在他们返航途中,又遭遇了两次飓风,直接损失战船150艘。看到再次遇到海难的罗马人,迦太基人重新起用了斯巴达雇佣兵,并且带上来150头大象浩浩荡荡地朝着巴勒莫进军,企图重新夺回这个西西里重镇。
罗马人是个十分善于总结失败经验教训的民族,巴勒莫的罗马人在城外挖了一条护城河,等战争打响,大象冲过来的战时候,在护城河前面的罗马士兵先是扔了一轮标枪,然后马上撤退,受到标枪攻击的大象开始狂暴,胡乱地冲入护城河,罗马人接着继续扔标枪,受到标枪和护城河双重打击的战象慌忙大乱,到处乱窜,甚至往回跑践踏迦太基人。趁着像阵大乱,罗马人果断出击,150头大象除了10头被罗马人捕获,其余全部战死,而迦太基人扔下两万多具尸体后,慌忙逃跑,这个时候时间已经来到了公元前249年。
迦太基人在跟罗马人打海战的时候,后面也慢慢学乖了,尽量不跟罗马的战船接触,凭借水手娴熟的技术,迦太基战船经常都是通过远程手段打击罗马战船,然后逐渐收缩包围圈,罗马海军也吃了一次大败仗。经过长达18年的战争,罗马人国库逐渐空虚,成年男丁人数下降了17%。迦太基人因为出战的多数是雇佣兵,国内男丁情况比罗马人好多了,但是迦太基人没有把握这个有利时机给予罗马人重创,他们国内的农业派与贸易派闹矛盾了。
公元247年,迦太基人派出贸易派出军事将领哈米卡尔·巴卡前往西西里岛挽救战局。可惜的是,最有利的时机已过,因为罗马人通过发行国债的方式,重新筹集了大量资金,有了资金作后盾,罗马人源源不断地派出士兵前往西西里岛支援。通过一年时间的谋划,罗马人成功地全歼了哈米卡尔的船队,迦太基人西西里岛的海上补给线被彻底切断,迦太基势力被完全逐出西西里岛。
公元前241年,看到大势已去的迦太基人作为失败者一方与罗马人最终坐到了谈判桌上,迦太基承诺不再主动攻击罗马及其同盟国,罗马则尊重迦太基的自治与独立。双方同时释放战俘,互不缴纳赎金。作为失败者一方,迦太基需向罗马10年内支付2200塔兰特的战争赔款。至此,持续了23年的第一次布匿战争宣告结束。