羅馬人在慢慢積蓄力量反擊迦太基。在連年戰(zhàn)火中,羅馬也歷練出了不少卓越的軍事家,而羅馬靠著這些悍將,最終走過了它最艱難的時日。
公元前210年,羅馬派兵出征西班牙。次年,羅馬軍突襲了新迦太基城,并在站穩(wěn)腳跟后收服了西班牙的民心。爾后,羅馬軍又在意大利與迦太基軍交手。此番,羅馬軍為保險起見,在戰(zhàn)端未起時就專門派兵監(jiān)視在意大利南部的漢尼拔的一舉一動。他們是要以防萬一,怕有個什么風(fēng)吹草動的,也能及時發(fā)兵牽制敵人。在意大利的另一處,羅馬軍與未能保住西班牙的守將,也就是漢尼拔的弟弟哈斯杜路巴爾展開決戰(zhàn)。本來,哈斯杜路巴爾見敵軍人多勢眾,考慮再三決定不直接觸其鋒芒,于是率部退至美陶魯斯河谷。不料在羅馬人發(fā)覺其退兵后,全速追上并將之包圍,哈斯杜路巴爾無奈之下只得應(yīng)戰(zhàn)。盡管迦太基軍竭力一拼,但最終還是未能取勝,哈斯杜路巴爾也戰(zhàn)死沙場。
美陶魯斯戰(zhàn)役是一場速戰(zhàn)速決的戰(zhàn)役,所以在羅馬軍來到漢尼拔面前,將漢尼拔弟弟的頭顱擲到他的兵營里時,他對此戰(zhàn)事還懵然不知。更令漢尼拔沒有想到的是,就是這場羅馬軍的空前大捷,讓羅馬人重拾自信,而戰(zhàn)爭的主動權(quán)也開始回到羅馬人的手中。
隨著時間的推移,漢尼拔持久以孤軍深入對敵作戰(zhàn)的弱點開始逐漸顯露出來。因為兵力和糧食的補給日益困難,再加上外援無望,羅馬借機收復(fù)了本土城市,還有迦太基與西西里、西班牙的勢力范圍也盡歸羅馬。至公元前205年,漢尼拔身陷意大利南面一隅之地,處境艱難。
公元前205年,羅馬軍隊轉(zhuǎn)戰(zhàn)至非洲迦太基帝國本土,西地中海爭霸戰(zhàn)進(jìn)入戰(zhàn)略性進(jìn)攻階段。此番,羅馬派出了幾十艘戰(zhàn)艦、幾百艘運輸船和數(shù)以萬計的士兵,連同同盟者努米底亞人的騎兵,與迦太基軍和另一支努米底亞人組成的援軍交戰(zhàn)于烏提卡城郊。戰(zhàn)爭的結(jié)果是羅馬軍大破迦太基軍,使迦太基喪失了騎兵來源地與糧食供應(yīng)地。這一次輪到迦太基情勢危急了,為此,漢尼拔被緊急調(diào)回國內(nèi)應(yīng)戰(zhàn)。
公元前203年6月,漢尼拔率軍登船回國。漢尼拔的歸來,讓迦太基人精神大振。本來岌岌可危的形勢讓迦太基人已有了求和之心,但當(dāng)勝利的曙光出現(xiàn)后,他們便毅然決然地拒絕和談的和約,甚至還拘禁了羅馬的使臣。
見迦太基如此"不識抬舉",羅馬決定好好敲打它一下。翌年,雙方會戰(zhàn)撒馬。將會戰(zhàn)地點選在撒馬,羅馬人是煞費苦心的。撒馬是一片開闊地,這樣羅馬人便可利用其騎兵的優(yōu)勢。顯然,漢尼拔也意識到了這點,思前想后覺得情勢于己不利,于是便想議和。但羅馬方怎會再給迦太基機會雙方能做的就是列陣開戰(zhàn)。