デルトサの戦い
イタリア
カンナエの戦いの後、カンパニア、サムニウム、ルカニア（en）、アプリアおよびブルティウムの幾つかの都市はカルタゴに降伏した。ハンニバルは紀元前216年から紀元前215年にかけて、カルタゴとの連絡が容易になるように、ネオポリス（現在のナポリ）、クーマエ、ノラといった港湾都市を攻撃したが、何れも失敗した。ハンニバルの弟であるマゴ・バルカの率いる分遣隊は、ルカニア（en）とブルティウムの反乱を鎮圧した。ブルティウムの軍の指揮をハンノに委ね、マゴは援軍要請のためにカルタゴに出帆した。
ローマは何回か軍を出動させたが、ハンニバルとの野戦は避け、その同盟軍を可能な場合にのみ攻撃する戦略をとっていた。独裁官（ディクタトル）マルクス・ユニウス・ペラはラティウム南方でローマに対する直接攻撃に備えていた。マルクス・クラウディウス・マルケッルスはノラでハンニバルと戦い、またネオポリスがカルタゴに付くのを阻止した。独裁官副官のセンプロニウス・グラックスは三番目の軍を率いてルカニアに滞陣していた。また幾つかの軍団が、北イタリアのガリア人の反乱に備えていた。
サルディニア
サルディニアに駐屯していたローマ軍団は疾病に苦しんでいた。法務官（プラエトル）クィントゥス・ムキウス・スカエウォラ（en）は現地兵士のために資金と食料を調達していたが、このことがサルディニア人に反感を抱かせた。サルディニア人の部族長であるハンプシコラは反乱を扇動し、カルタゴに救援を求めた。
カルタゴ
カルタゴは歩兵15,000、騎兵1,200、戦象20からなる群を組織し、イタリアから戻ったマゴを司令官とした。マゴは60隻の五段櫂船に護衛されて再びイタリアに向かった。サルディニアからの救援要請が届くと、同規模の軍が組織され、「禿のハスドルバル」を指揮官としてサルディニアに遠征軍が送ることとされた。
イベリア
紀元前217年春のエブロ川河口の海戦での敗戦以来、ハスドルバルは守勢を取っていた。ローマ軍の侵攻に備えて、エブロ川の防衛に副将のボアステルが任じられていたが、ローマ軍が渡河すると撤退した。さらにイベリア人の部族長であるアビリクスの計略にかかり、サグントゥムに捕らえていたイベリア人の人質をローマに渡してしまった。これが引き金になってカルタゴに対する反乱が発生し、特に紀元前216年に発生したガデス（現在のカディス）近くのトゥルデタニ族（en）の反乱は大規模であった。ハスドルバルは歩兵4,000と騎兵500を率い、イベリア半島を平定した後にイタリアに侵攻するように命令された。しかし、紀元前216年のかなりの期間をイベリア人の反乱の鎮圧に費やす必要があり、ローマ侵攻に関する準備は殆どできなかった。
エブロ川河口の海戦の後、グナエウス・スキピオには弟であるプブリウス・スキピオが兵8,000と共に加わった。両者共にプロコンスル（前執政官）の地位を得ており共同して軍の指揮をとっていた。兄弟はカルタゴ海軍を撃滅し、カルタゴ支配下のイベリアをとバレアレス諸島を襲撃するという積極戦略を採用した。また、イベリア半島の諸部族にも同盟軍への参加を申し入れ、各都市に守備兵を置いて作戦範囲を広げ、エブロ川以北のローマの支配を強化した。また、親ローマの部族に対し、エブロ川以南の親カルタゴのイベリア部族に対する襲撃するよう後押しした。
序幕
紀元前215年初頭、ローマ軍はエブロ川を渡り、小規模なカルタゴ同盟都市に対する攻撃を行った。カルタヘナの防衛をヒミルコに委ね、ハスドルバルは野戦軍を率いて北に向かった。しかし、エブロ川は越えず、イベリアで包囲戦を行っているローマ軍に対する攻撃も行わなかった。その代わり、ローマと同盟関係にあったデルトサを囲んだ。スキピオ兄弟は、イベリア諸都市の包囲を解いて、ハスドルバルに対処するために移動せざるを得なくなった。即ち、ハスドルバルは戦略的イニチアチブを握ったことになる。両軍はイベラとデルトサの間の平地に5マイル離れて野営した。5日間ほどの小競り合いが続いた後、本格的な戦闘が開始された。
両軍の兵力
ローマ軍の兵力は2個ローマ軍・兵力10,000とイタリア同盟国軍18,000であった。騎兵はローマ重騎兵600、同盟国重騎兵1,800を有していた。加えて、イベリア諸部族の歩兵2,000および騎兵400があった。
ハスドルバルはリビア槍兵15,000、傭兵1,000（主としてリグリア兵）、イベリア兵8,000を有していた。カルタゴ軍騎兵兵力は、リビア/カルタゴ重騎兵450、イベリア重騎兵1,200、ヌミディア軽騎兵2,300であった。さらに、戦象20、投石兵1,000があった。
兵力配置
ローマ軍は通常通りの兵力配置を行った。即ち、歩兵を中央に、騎兵を両翼に配した。ローマ・イベリア騎兵は右翼に、同盟軍騎兵は左翼を守った。両翼騎兵の内側には同盟軍歩兵が配され、ローマ軍団兵が中央を固めた。ローマ軍野営地防衛のためにイベリア歩兵と、2,000のローマ・同盟国歩兵が残された。
ハスドルバルはリビア・イベリア騎兵を左翼に配置しローマ・イベリア騎兵に対峙させ、ヌミディア軽騎兵を右翼に配置してローマ同盟軍騎兵に対峙させた。それぞれの騎兵の側面にはリビア兵のファランクスを置き、傭兵隊がこれを支援した。ファランクスに挟まれたカルタゴ軍戦列中央はイベリア歩兵であったが、戦列は薄かった。戦象は10頭ずつに分けられ、それぞれの騎兵部隊の前に置かれた。歩兵部隊の前には投石兵が配置された。2000-3000名がカルタゴ軍野営地の防衛のために残された。
戦闘
ハスドルバルはカンナエの戦いと同様な両翼包囲作戦を計画した。即ち、ローマ軍を中央で突出させ、これを左右から挟撃する予定であった。
戦闘はカルタゴ軍投石兵とローマ軍軽歩兵（ウェリテス）の小競り合いによって開始され、続いて中央部のローマ軍団兵が、対峙するイベリア歩兵に向かって突撃した。ローマ歩兵は兵力10,000とイベリア歩兵の8,000に対して数的に勝るだけでなく、イベリア歩兵の戦列は薄かったため、容易にイベリア兵を圧倒した。しかし、ハスドルバルにとってはこれは予定通りであった。ローマ歩兵の支援のため、ローマ同盟国歩兵が対峙するリビア兵ファランクスに接近した。
リビア兵ファランクスと傭兵部隊は、対峙するローマ同盟国歩兵に対する突撃を開始した。同盟国軍が数的に勝っていたにも関わらず（18,000対16,000）、同盟国歩兵は押し込まれた。しかしカンナエの戦いとは違い、リビア兵は同盟国軍戦列を突破して中央のローマ軍団側面を攻撃することはできなかった。
側面では、まずローマ騎兵を混乱させるために両翼のカルタゴ軍戦象がローマ騎兵に突撃したが、ほとんど効果が無かった。続いてカルタゴ軍騎兵も突撃を開始した。しかし優勢な兵力を有していたにも関わらず（カルタゴから見て左翼1,600対1,000、右翼2,000対1,800）、これもカンナエとは違ってカルタゴ軍騎兵はローマ軍騎兵を戦場から駆逐できなかった。結局両翼ともに戦線は固着してしまった。
この時点で中央のイベリア歩兵が崩れ、戦場から逃亡し始めた。これを見たカルタゴ騎兵はローマ軍騎兵との小競り合いを中止し、自身も戦場を脱出した。ローマ歩兵はイベリア歩兵を崩した後、同盟国歩兵の支援にまわりリビア兵ファランクスを攻撃した。リビア歩兵は頑強に抵抗し、結局は敗れたものの、ローマ軍に多大な損害を与えた。
その後
カルタゴ軍の戦象と騎兵は殆ど無傷であり、ハスドルバル自身も無事ではあったが、歩兵の損害は大きかった。ローマ軍の追撃は積極的ではなくキッサの戦いの後と同じように勝利の結果を固めることに注力した。ローマ軍はカルタゴ軍野営地を襲ったが、すでにハスドルバルは兵を撤退させていた。粉砕されたカルタゴ軍はカルタヘナに撤退し、エブロ川の南にもローマ軍の地歩が築かれた。
イベリア半島でのカルタゴ勢力を維持し、ローマ軍の動きをけん制するため、ハスドルバルの軍ははマゴ・バルカとハスドルバル・ギスコの軍で強化されることになる。しかしカルタゴ軍はエブロ川以北に対する効果的な作戦を行うことは二度とできなかった。
スキピオ兄弟は勝利の後に追撃を行い、戦果を広げようとはしなかった。以前の戦略を継続し、機を見て襲撃を行い、イベリア部族の反乱を促し、ローマの地盤を固めていった。スキピオ兄弟に対するその後のローマからの兵力増派は無かった。紀元前212年まで、スキピオ兄弟はバルカ兄弟とギスコととの間に一進一退を繰り返すが、紀元前211年のバエティス川の戦いでカルタゴ軍に大敗し、両者とも戦死した。