スキピオ・アフリカヌス
紀元前205年、市民からの支持を得たスキピオは31歳にして執政官に選ばれた。しかし元老院によってシチリア島以南への渡航は禁じられており、指揮する軍団も与えられていなかった。この時期のポエニ戦争におけるローマはクィントゥス・ファビウス・マクシムスが唱える非攻勢戦術をとっており、ハンニバルの活動地域は南イタリアのカラブリア地方に限定されていた。しかしハンニバルの率いる軍事力は健在であり、スキピオが唱える基本戦略の攻勢への転換は、元老院には到底受け入れられるものではなかった。
そこでスキピオは市民の中から義勇兵を募集し、シチリア島で兵の訓練に日を費やす。彼の呼びかけは全イタリアに届き、とくにカンナエの戦いで生き残った者たちが雪辱のために応募したという。
スキピオは若い頃に経験した敗戦を通じてハンニバルの用兵を目の当たりにしており、機動力に優れた騎兵の活用が鈍重な重装歩兵への攻撃に有効であることを理解していた。またカルタゴ軍の内情、すなわち傭兵に頼っており、騎兵兵力はヌミディア騎兵に頼っているという欠点を見抜いていた。さらにスキピオは自軍ローマの騎兵の質も理解していた。ローマ軍の騎兵戦力は現地の諸部族か上流階級のローマ人かのどちらかであり、諸部族は忠誠心の点で当てにならず、ローマ人騎兵はただ歩兵との違いを誇示したいがために馬に乗っているだけで実戦力として不安だという欠点がある。
紀元前204年、元老院からの許可を得たスキピオは北アフリカに渡航、ウティカ近郊に上陸してウティカを包囲するが、親カルタゴ派となったヌミディア王シュファクスの妨害により失敗した。しかし翌年、スキピオはカルタゴ・ヌミディア同盟軍を夜襲で破る。これは不意打ち程度のものとも言われるが、ポリュビオスは同盟軍が4万の死者を出したと記述している。この敗戦で主導権を失ったシュファクスは、戦線を離脱する。
スキピオはラエリウスとマシニッサを遣わしてシュファクスをヌミディアまで猛追し、王位から逐ってマシニッサを新たなヌミディア王位につけた(バグラデス川の戦い、キルタの戦い)。これまでハンニバルを含むカルタゴ軍は騎兵兵力をヌミディア兵士に頼っていたが、ここで一転してヌミディアはローマ陣営に付くこととなり、カルタゴは孤立状態となった。