В следующем 216 до н. э. консулами стали Гай Теренций Варрон и Луций Эмилий Павел. Рим готовился к решительным действиям — было собрано 8 легионов, таким образом против Ганнибала имевшего 50000 воинов была направлена армия в 90000 человек. Битва состоялась у города Канны. Консулы выстроили всю римскую армию в боевой порядок: на правом фланге, более близком к реке, расположили всадников, на левом — конницу союзников и ближе к центру — их пехоту. В центре находились римские легионы, а перед строем — пращники и другие легковооружённые воины. Командование левым флангом взял на себя Гай Теренций Варрон, правый фланг он поручил Луцию Эмилию Павлу и центр — Гнею Сервилию Гемину. Рано утром Ганнибал переправил на левый берег Ауфида балеарские части и другие легковооружённые формирования, а за ними и остальных солдат. На левом фланге, ближайшем к реке. он поставил иберийских и галльских всадников, которые должны были действовать против римской конницы, в центре — пехоту (половину — тяжеловооружённых ливийцев, посредине этого строя — галлов и иберов, а за ними — снова ливийцев) и на правом фланге — нумидийских всадников, которые здесь должны были сражаться с римскими союзниками. Ливийцы были вооружены трофейным оружием, отобранным у римлян. Численность армии составляла 40 000 пехотинцев и 10000 всадников.
Расположены были карфагеняне исключительно удобно: лицом к северу и спиной к ветру, дувшему и нёсшему песок и пыль в лицо римлянам; солнечные лучи не слепили воинов. При построении Ганнибал выдвинул вперёд иберов и галлов, которые должны были первыми вступить в бой, а остальных расположил так, что образовалось нечто вроде выгнутого в сторону фронта огромного полумесяца, делавшегося по краям все тоньше и тоньше. Командование левым флангом Ганнибал поручил Гасдрубалу, правым — Махарбалу, а сам вместе со своим братом Магоном взял на себя центр. Сражение, как и обычно, завязали легковооружённые солдаты. Затем галльско-иберийская конница Ганнибала обрушилась на правый римский фланг и вскоре обратили римлян в бегство, после чего был разбит и левый фланг римлян. Тем временем в бой вступила пехота, и иберийско-галльские пехотинцы Ганнибала после упорного сопротивления начали медленно отступать, увлекая за собой римлян, проникавших все глубже в расположение карфагенских войск. Между тем ливийские пехотинцы атаковали римлян с обоих флангов, а пунийская кавалерия нанесла удар в тыл. Римская пехота оказалась в кольце и вскоре судьба битвы была решена. 70000 пало на поле боя, 16000 было взято в плен, потери Ганнибала составили 6000 человек — преимущественно среди иберов и галлов.
Последствия битвы были огромны. На сторону пунийцев перешли множество итальянских городов и главное — Капуя. Из Карфагена было решено послать Ганнибалу 40 слонов и 4000 конницы, а из Испании — 20000 пехоты и 4000 конницы. Сиракузы и Македония заключили с Карфагеном союз.
Но в Испании дела пунийцев шли всё хуже — жертвами нового поражения стали 25000 убитых и 10000 пленных воинов. Подкрепления же предназначенные Ганнибалу были безуспешно использованы в попытке захвата Сардинии.
В Италии боевые действия переместились на юг и римляне постепенно оправлялись от страшного поражения, их армия пополнялась даже рабами.
3.6. Осада Сиракуз
В Сицилии после заключения союза с Сиракузами карфагеняне добились существенных успехов. 15000 армия Сиракуз совместно с пунийскими частями сильно теснила римские войска., но вскоре появился Марцелл с сильной армией и двинулся на Сиракузы. Город был большой и римляне рассчитывали, что им удастся быстро преодолеть стены, но они встретили, совершенно неожиданно, очень сильное сопротивление, организатором которого был Архимед. Марцелл был вынужден начать осаду. Карфагеняне тем временем отправили на Сицилию армию из 25 000 пехотинцев, 3000 всадников и 12 слонов.
3.7. Нападение Македонии на Иллирию
Царь Македонии Филипп V, выполняя свои союзнические обязательства напал на римские владения в Иллирии, однако существенной поддержки Ганнибалу это не принесло. В 214 году до н. э. в Испании пунийцы потерпели два поражения стоивших им до 12000 убитыми, 3000 пленными и 39 слонов. Таким образом после целого ряда поражений господство на Пиренейском полуострове начало переходить к Риму.
3.8. Переход Сифакса на сторону римлян
В 213 году до н. э. произошло ещё одно событие, которое и в самом Карфагене, и в лагере Ганнибала не могли не воспринять как серьёзную угрозу: братья Сципионы, успешно воевавшие на Пиренейском полуострове, высадились в Северной Африке. Это была уже вторая попытка римского командования перенести войну непосредственно на территорию Карфагенской державы. На этот раз африканская экспедиция привела к большому дипломатическому успеху римлян. Им удалось воспользоваться тем, что у карфагенян возникли столкновения с одним из нумидийских царей — вождём племени масайсилиев — Сифаксом, и заключить с ним союз. Центурион Квинт Статорий остался даже у Сифакса обучать его воинов римскому боевому строю и военному искусству. Результаты не замедлили сказаться: вскоре в одной из стычек масайсилии разбили карфагенян.
Второй период войны (212—207 до н. э.)
4.1. Военные действия в Италии в 212—209 до н. э.
В 212 году до н. э. на сторону Ганнибала перешёл Тарент и, следом за ним, ещё несколько городов бывшей Великой Греции. Римляне понесли ещё одно поражение (стоило им 16000 убитых), но сумели осадить Капую, а главное — Сиракузы были взяты. После некоторых частных успехов карфагеняне были вынуждены оставить Сицилию. Тем временем в Испании братья Сципионы понесли сильнейшее поражение и погибли в бою, но Марцелл сумел организовать остатки армий и силы для сопротивления всё ещё оставались.
В следующем году Ганнибал предпринял попытку деблокировать Капую, с этой целью он предпринял марш к Риму. Ганнибал у ворот! Казалось, вся Италия, затаив дыхание, замерла в ожидании. В самом Риме то тут, то там возникала тревога, начиналась паника, люди в смятении ожидали, что бои вот-вот завяжутся на улицах города. Но никаких последствий это не имело, а вскоре Капуя сдалась — это был решительный успех. Римляне напрягали все силы. Под знамёна были призвано всё население от 17 до 47 лет, в армиях сражались 230000 человек.
4.2. Перелом
В 209 году до н. э. сын Корнелия Сципиона, Публий Корнелий Сципион принял командование в Испании и совершенно неожиданно захватил Новый Карфаген, а в Италии римлянами был взят Тарент. Теперь все надежды Ганнибал связывал с братом Гасдрубалом, который, отбросив Сципиона, вёл из Испании крупные подкрепления. Переход через Альпы прошёл относительно легко и в следующем, 208 г. до н. э. он вступил в Италию. Однако консул Нерон разбил его у реки Метавр, сам Гасдрубал пал в бою. После этого сил Ганнибала уже не хватало на ведение активных боевых действий, его незначительные успехи уже не могли решить исхода войны.
Третий период войны (206—202 до н. э.)
В Испании Магон потерпел поражение и был вынужден оставить весь пиренейский полуостров под властью Рима. Его высадка у Генуи с 12 000 пехотинцев и 2000 всадников ничего не решала, вскоре он был ранен и убит. Ганнибал не предпринимал активных действий, казалось, что он потерял всякую надежду.
Филипп V после безрезультатных боевых действий был вынужден заключить мир.
5.1. Война в Африке
В 204 году до н. э. Сципион высадился с тридцатитысячной армией в Африке. Заключив союз с вождём одного из нумидийских племён Массиниссой он нанёс несколько поражений карфагенянам. Ганнибала призвали на родину. Он вернулся после 16 лет боевых действий в Италии. Ганнибал попытался добиться уступок при проведении мирных переговоров в личном свидании со Сципионом, но успеха не добился.
В 202 году до н. э. у Замы состоялось генеральное сражение Сципион построил свою армию не сплошным фронтом, а отрядами, между которыми были оставлены проходы, по которым в случае надобности могли идти боевые слоны. На левом фланге под командованием Лэлия он поместил италийских всадников, на правом — нумидийскую конницу Массиниссы. Проходы между отрядами тяжеловооружённых пехотинцев он заполнил легковооружёнными солдатами, которые должны были при появлении слонов убежать в тыл или примкнуть к ближайшим отрядам. Животные, двигаясь по этим живым коридорам, попали бы под перекрёстный обстрел дротиками. Ганнибал перед своими войсками поставил 80 слонов, за ними вспомогательные отряды лигуров, галлов, балеаров и мавров, во втором ряду — карфагенян, ливийцев и небольшую группу македонян, которых наконец-то прислал на помощь Филипп, за ними — отряды италиков, большей частью брутиев, вынужденных навсегда покинуть родную землю и, наконец, на правом фланге карфагенскую, а на левом — нумидийскую конницу. Битва началась с того, что римляне своим криком, сигналами труб и рожков перепугали слонов, и они, уж в который раз, обратились против своих, главным образом против стоявших на левом фланге мавров и нумидийцев. Туда же направил свой удар и Массинисса. Те немногочисленные животные, которые устремились на врага, попали под удары римских дротиков и в конце концов повернули направо, против карфагенских всадников, куда двинул свою конницу и Леллий. Так как на стороне римлян теперь сражались нумидийцы, то Магон, командир карфагенской конницы, решил отступить, и заманить вражеских всадников подальше от места сражения, уравняв силы сторон. Второй ряд карфагенян попытался обойти римлян с флангов. После этого римский натиск несколько ослаб, и тогда Сципион, убрав раненых, ввёл в дело триариев, то есть основные резервы. Сражение возобновилось, а тем временем Леллий и Массинисса, которые разбили пунийскую кавалерию, сумели собраться и напали на карфагенскую пехоту с тыла — карфагеняне побежали. В этом бою погибло более 20 000 карфагенян и их союзников, столько же попало в плен. Римляне потеряли несколько более 1500 человек. Сам Ганнибал с небольшим отрядом всадников бежал в Гадрумет. Так закончилась война.