羅馬與迦太基人最後一戰史稱「扎馬之戰」。在這次大戰役前,雙方曾一度進行和談,可是合約很快就被撕毀了。扎馬之戰爆發的準確時間可以根據日食發生的日期推算出來。因為戰鬥進行到最關鍵的時候,曾經發生了一次日食。生活在迦太基境內的努米底亞人倒向了羅馬,他們的騎兵明顯強過迦太基軍。戰鬥時,漢尼拔的左右兩翼都被騎兵所摧毀,他所依仗的戰象兵也被小西庇阿訓練的精銳步兵擋住。漢尼拔試圖用步兵包抄羅馬軍團,可是當他的軍隊發現羅馬軍團有比他們還強大的步兵陣線時,就止不住分崩離析了。羅馬軍團大獲全勝。他們的騎兵在追擊漢尼拔騎兵回來後,又遇到了失敗的迦太基步兵,結果又大殺一場。迦太基徹底失敗了,他們與羅馬籤訂了極其苛刻的合約,不過合約還是給他們留下了東山再起的可能。
根據約定,西班牙被割讓給了羅馬;迦太基只被允許保留10艘軍艦,其餘的全部賠償給了羅馬;迦太基還要交出10000塔蘭特軍費賠償。最關鍵的是,如果沒有經過羅馬人允許,迦太基不得對外宣戰。後來,合約中又加入一條:把漢尼拔帶到羅馬去。可是這時候漢尼拔已經聞訊逃亡亞洲了。自扎馬之戰後的50多年裡,羅馬不斷向外擴張,但國內也出現了貧富差距加大,大量自由農民陷入窮困境地的現象。就整體而言,羅馬的共和政體出現了倒退。公民權利沒有絲毫擴大,附屬於羅馬的異族居民也失去了融入羅馬的機會。在對西班牙的統治上,羅馬政策失誤;伊利裡亞和馬其頓淪落為納貢行省。
很明顯,這是羅馬加緊盤剝附庸,以減輕本國居民負擔的政策的體現。公元前168年,義大利境內廢除了舊的土地稅,在這一區域羅馬政府唯一的收入就是國稅和海外進口關稅。真正支持羅馬政府開支的,是他們在亞洲地區徵收的稅負。在羅馬國內,「卡託」們依靠貸款大肆聚斂土地,自由農民被從自己的田地上趕走,越來越便宜的奴隸成了主要勞動者。羅馬貴族永遠不缺乏奴隸,因為在他們看來,所有海外的異族人都是他們潛在的奴隸來源。西西里成為富人們的農場,大量奴隸在那裡種植穀物,然後把產出所得運回羅馬賺取厚利。至於義大利本土的田野,都變成了牧場。
失去土地的羅馬人走進了城鎮,其中湧入羅馬城的尤其多。羅馬人對西庇阿——西庇阿·阿非利加的愛戴是如此之深,以至於2000年後紀念他的還大有人在。圖為公元前106年鑄造的西庇阿頭像銀幣面對不斷腐朽的羅馬,也不是沒有人反抗,擊敗迦太基的西庇阿——西庇阿·阿非利加就是其中之一。不過對他,羅馬貴族一直針鋒相對。在他還沒有取得最後大戰勝利以前,他們就採取各種措施拖他的後腿,當他進軍非洲以後,貴族們又在後方肆意詆毀。西庇阿取得勝利後,驚慌失措的貴族甚至想盡辦法不給他任何官職。西庇阿是個性情豁達但是忍耐力不強的人,他不會利用時勢來給自己增加名望。他的哥哥盧西烏斯·西庇阿第一次率軍進入亞洲時,他曾經跟隨在後面參贊軍務。
公元前190年,盧西烏斯擊敗了塞琉古王朝的君主。由於元老院對他的戰功大為妒忌,所以就污衊盧西烏斯貪汙了戰利品。這引起西庇阿的強烈憤慨。當哥哥試圖在元老院為自己辯解的時候,他衝出來,把哥哥手裡的戰利品清單奪過去撕得粉碎,並且大聲疾呼:盧西烏斯已經向國庫繳納了20萬賽斯太裡亞戰利品,現在他還要為一些莫須有的罪名受人刁難和挑剔嗎?最後,盧西烏斯還是被判處有罪,西庇阿武裝劫牢救了他。後來,大聖歸來的西庇阿遭到陷害彈劾。他當眾提醒羅馬人民說,那一天正是扎馬戰役的周年紀念,這引起了人們的狂歡。羅馬當局對此毫無辦法。羅馬人對西庇阿——西庇阿·阿非利加的愛戴是如此之深,以至於2000年後紀念他的還大有人在。
不過,西庇阿天生缺乏平民領袖的素質,而且他也沒有愷撒那樣的才幹,在政治能力方面也非常平庸,所以戰事結束後他就隱居田園了。公元前183年,西庇阿逝世。在同一年,漢尼拔也因為絕望而服毒自盡。在此之前,羅馬元老院出於對漢尼拔的恐懼,始終不遺餘力地追捕他。雖然西庇阿持反對意見,但是羅馬政府還是不斷向一個又一個給漢尼拔提供庇護的國家施壓,要求他們交出漢尼拔。最後,漢尼拔逃到了比提尼亞。提尼亞國王扣押了他,準備把他引渡到羅馬。於是絕望的漢尼拔就用藏在自己指環裡的毒藥自殺了。羅馬歷史上還有一個名叫「西庇阿」的名人——西庇阿·納西卡。
他經常在元老院宣揚「迦太基有利於羅馬」論。在他看來,迦太基的存在是有助於刺激羅馬繁榮的。這一點並不容易為羅馬人所接受。事實上,最後一次布匿戰爭——第三次布匿戰爭的爆發原因恰恰是迦太基通過商業發展再次繁榮起來了。雖然羅馬和迦太基之間並沒有商業競爭存在,可是繁盛的迦太基還是引起了羅馬人的忌妒。第三次布匿戰爭事實上就是羅馬對迦太基發起的掠奪戰爭:他們先誘使努米底亞人去劫掠迦太基,當迦太基人忍無可忍進行反擊的時候,羅馬軍團就以他們違背條約、隨意開戰為由發起了進攻不敢與羅馬為敵的迦太基應羅馬要求,派出了人質,繳納軍械,割地賠款。
可是這些並沒有滿足羅馬人的貪慾。羅馬元老院還是要求毀掉迦太基城,所有迦太基人民必須遠離海岸至少10英裡——這對一個依靠海洋為生的民族是多麼殘酷!這樣苛刻的要求激起了迦太基上下一致的反對。他們召回在外的族人,開始準備抵抗。多年沒有進行徵戰的羅馬軍團戰鬥力極其衰弱。公元前149年,進攻迦太基的羅馬人大敗而回。作為低級軍官的西庇阿·納西卡卻在戰鬥中大放異彩。戰爭仍在繼續,羅馬人仍在不斷失利。一時間,羅馬居民恃強凌弱的心態變成了極度的恐慌。西庇阿·納西卡還沒有成年,可是他還是因為顯赫的家世被選為執政官,受命率軍出擊。