罗马约7万人的军队更被全歼。可是罗马同盟的基础太厚，汉尼拔不能完全将其瓦解，使罗马获得喘息机会。西元前212年起，罗马转入反攻状态，直攻迦太基，汉尼拔被逼回师去援救。结果汉尼拔因千里驰援，致使兵力下降，而其兵士亦显得疲态毕露，最后于扎马战役被科尔内利乌斯·西庇阿击败。迦太基被逼于前201年与罗马人签订了条款苛刻的和约，条约规定迦太基失去阿非利加以外的一切领地，将整个舰队交给罗马，并偿付巨额战争赔款，迦太基失去所有伊比利亚半岛的领土，海军解散，只能有10艘防海盗的船。这场战争共打了16年（前218年－