ハンニバル
さらにハンニバルと行動を共にしていた弟・マゴのリグリア攻略失敗、またピリッポス5世との連携の失敗などによって、南イタリアでの主導権回復の術を失う。このようにローマはハンニバルの指揮下にない敵対勢力を徐々に削り取っていった。
ハンニバルがアプリア地方に封じ込まれる中、ローマではヒスパニアで功績を挙げたスキピオが攻勢に転じようとしていた。シチリア島を占拠した後、彼はそこを拠点にして志願兵を募り養成していたが、カンナエの戦いの失敗から攻勢への転換に踏み切れない元老院は、当初スキピオに渡航許可を与えなかった。曲折を経てようやく元老院の許可(実際は黙認であり、スキピオへの援助・援軍は約束されなかった)が出たスキピオは、軍勢とともにアフリカに渡航する。いきなりハンニバルを無視して本土に現れた敵にカルタゴ政府は驚き、ヌミディア王国のシュファクス率いる騎兵を援軍として戦うが敗北した。
この敗戦に狼狽したカルタゴ政府は、態度を一変してローマとの休戦交渉とハンニバルの召還を画策、休戦交渉は成立するか見えたが、ハンニバル召還の露見によって休戦交渉は反故となった。ともあれ紀元前203年、ハンニバルは十数年ぶりに故国カルタゴに戻る事となった。
スキピオは先の会戦でヌミディア王シュファクスを追撃して王位から引きずり下ろし、ローマ側についていたマシニッサをヌミディア王に即位させていた。これによって、それまで重要な騎兵兵力をヌミディアに依存していたカルタゴ軍は、ローマに対する騎兵の優位を失った。このような状況の中、ハンニバルはスキピオに直接交渉を打診し、紀元前202年10月19日、ハンニバルは対峙する両軍の前でスキピオと会見した。
ハンニバルはスキピオに対して、ローマとカルタゴは相互不可侵とし、地中海を境に北をローマ領とし、南をカルタゴ領とするという休戦条件を提案する。しかしスキピオはこのたびの戦争はハンニバルのザグントゥム侵略が発端だと指摘、ローマ人はカルタゴ人を信用できないと拒否する。個人的には互いの才能を高く評価していた2人であったが、交渉は決裂した。
ザマの戦いはそれまでのハンニバルの戦いと異なり、歩兵ではカルタゴ有利なものの騎兵ではローマ軍に劣るという状況であった。この劣勢を覆すためにハンニバルは先頭に戦象を配備した。敵に戦象がいる事を知ったスキピオは、軽装歩兵で編成されている歩兵中隊を広い間隔で配置し、直進しかできない戦象を回避させ、無力化する事に成功した。大集団の密集した重装歩兵を基幹とするカルタゴ軍は機動力に勝るローマ軍の騎兵に後方から攻撃され、また前面からはローマ歩兵に包囲されて大敗した。これによってカルタゴの地中海での優位性は完全に失われ、第二次ポエニ戦争はカルタゴの敗北に終わった。
紀元前221年にハシュドゥルバルが暗殺されると、ハンニバルはまだ26歳ながらも、軍隊に司令官として指名され、カルタゴから承認を受ける。そしてイベリア半島戦線の指揮を執り、エブロ川南方の制圧に着手した。当時カルタゴはローマとエブロ川を境界として相互不可侵条約を結んでいたが、ハンニバルの力を恐れたローマはエブロ川南方にある都市サグントゥム(現サグント)と同盟関係を結び、彼の侵出を阻止しようとする。しかし、ハンニバルはサグントゥムを包囲攻撃し、8か月後に陥落させた。ローマはハンニバルの行動を条約違反としてカルタゴ政府に懲罰を要求したが、ハンニバルの絶大な人気の前に、カルタゴ政府は彼に対して何の手も打てなかった。
紀元前218年、ハンニバルはカルタゴ・ノウァを出発。はじめハンニバルの軍勢は歩兵90,000人(リビア兵60,000、ヒスパニア兵30,000)、騎兵12,000(ヌミディア兵主体)、戦象37頭、カルタゴの伝統通り多数の傭兵が含まれていた。ハンニバルはエブロ川を渡ったところで、歩兵10,000人、騎兵1,000人をピレネー山脈からエブロ川までの守りに残し、また遠征に不安を抱いたヒスパニア兵は帰還させた。ハンニバルの軍勢は歩兵50,000、騎兵9,000、戦象37頭となった。これを率い、ハンニバルはピレネー山脈を越えガリアに入った。