Если римские историки завышают римские потери втрое, то их истинную величину за 218–209 годы с учетом приведенных выше расчетов можно оценить в 60 тысяч убитых и умерших от ран и в 180 тысяч умерших от болезней. За последние годы войны римские потери пропорционально можно определить в 30 тысяч погибших и в 90 тысяч умерших от болезней. За Вторую Пуническую войну в целом римская армия потеряла 90 тысяч убитыми и умершими от ран и 270 тысяч умершими от болезней.
Исчислить потери карфагенян на основе римских источников невозможно, так как они преувеличены там в гораздо большей степени, чем потери римлян. Можно только предположить, что они были меньше, чем у Рима, так как карфагенская армия значительно уступала римской в численности. Русский военный историк Н. П. Михневич считал, что во Второй Пунической войне Рим потерял 300 тысяч убитыми, а Карфаген – 140 тысяч убитыми и 100 тысяч умершими от болезней. Число убитых с обеих сторон здесь существенно преувеличено, да и от болезней римское войско наверняка страдало ничуть не меньше карфагенского. Но предположение Михневича, что в бою потери карфагенян были примерно вдвое ниже потерь римлян, возможно, недалеко от истины. Тут должно было сказаться как полководческое искусство Ганнибала, так и более высокий уровень подготовки профессиональной армии Карфагена. Ее потери можно оценить в 45 тысяч убитыми и умершими от ран и 135 тысяч умершими от болезней.
После поражения при Каннах римляне призвали в армию всех способных носить оружие, начиная с 17-летнего возраста, и сформировали 4 легиона. Государство выкупило 8 тысяч рабов, которые составили еще два легиона.
Карфагенская армия двинулась на юг. Многие самнитские племена перешли на сторону Ганнибала. В Кампании Ганнибала поддержал крупнейший город Капуя, но на юге Италии, в области Великой Греции, Неаполь, Кумы и Нола сохранили верность Риму. Ганнибал заключил союз с македонским царем Филиппом V, а в Сицилии на сторону Карфагена перешел тиран Сиракуз Гиероним. Римляне, избегая решительных сражений, ограничивались действиями против коммуникаций армии Ганнибала и перешедших на его сторону италийских городов. Против Филиппа на Балканах была составлена коалиция из Этолийского союза, ряда греческих городов и пергамского царя Аттала I. Македоняне эту войну в конце концов выиграли, и римляне вынуждены были уступить им в 205 году некоторые свои владения в Иллирии. Однако непосредственно в Италии помочь Ганнибалу Филипп не смог.
Римляне в 212 году осадили Капую, обнеся ее контрвалационной и циркумвалационной линией. Ганнибал пошел на выручку Капуи, но не смог прорвать циркумвалационную линию. Тогда он в 211 году пошел на Рим, рассчитывая заставить римлян отказаться от осады Капуи. Однако римляне понимали, что у карфагенского полководца нет сил для осады прекрасно укрепленного «вечного города», и не ушли из-под Капуи. Ганнибал, разорив окрестности Рима, отступил на юг. Вскоре Капуя капитулировала. Ее жителей продали в рабство. В 209 году римляне достигли еще одного важного успеха: войско под командованием Фабия Максима взяло Тарент, а в 211 году пали Сиракузы.
В 210 году на Пиренейский полуостров прибыла римская армия под командованием Публия Корнелия Сципиона-младшего, сына убитого военачальника. В 209 году она взяла Новый Карфаген – главную пунийскую базу в Испании. При штурме римляне воспользовались отливом и ворвались в крепость со стороны моря, где укрепления были слабее. После падения Нового Карфагена многие испанские племена перешли на сторону римлян. В 208 году Гасдрубал из Испании двинулся на помощь Ганнибалу и в 207 году появился в Северной Италии. Ганнибал узнал об этом и перешел из Бруциума в Апулию, надеясь соединиться с братом где-нибудь недалеко от Рима и попытаться осадить вражескую столицу. Перед этим в ходе кампании 208 года карфагенянам удалось нанести поражение армии консулов Марцелла и Криспия, причем первый из них был убит, а второй ранен и вскоре умер. После этого Ганнибал деблокировал пунийский гарнизон в Локрах, осажденный римлянами. Те же, в свою очередь, взяли реванш на море. В сражении у Клупеи оказалась разбита пунийская эскадра из 83 судов.
Римляне располагали в то время в Италии 23 легионами. Часть войск во главе с консулом Клавдием должна была сковать армию Ганнибала, а другая, под командованием консула Марка Ливия, двинулась навстречу Гасдрубалу. Последний, в свою очередь, потратил время на безуспешную осаду Плаценции. Тем временем к Марку Ливию присоединился другой консул, Гай Клавдий Нерон, со своей армией. В сражении при реке Метавре карфагенское войско было разбито превосходящими силами римлян, а сам Гасдрубал убит.
Последнюю попытку помочь армии Ганнибала предпринял его брат Магон. В 205 году он переправился из Испании на Балеарские острова, а потом – на лигурийское побережье Италии с 12 тысячами пехотинцев и 2 тысячами всадников. Однако римляне его блокировали, и, несмотря на поддержку лигурийцев и галлов, помочь Ганнибалу Магон не смог.
В 204 году Сципион высадился в Африке с 30-тысячной армией. Против него выступили союзные Карфагену нумидийцы. Сципион нумидийцев разбил, свергнул с престола их царя Сифакса и передал трон его сыну Массанассе, ставшему к тому времени уже римским союзником. В 203 году сенат Карфагена отозвал Ганнибала из Италии. Сознавая слабость своего войска, карфагенский полководец вступил в переговоры с Сципионом, но тот требовал от пунийцев капитуляции. 19 октября 202 года при городе Заме в пяти переходах от Карфагена произошло последнее сражение Второй Пунической войны. Ганнибал имел 35 тысяч пехоты, до 3 тысяч конницы и 80 боевых слонов, которых, однако, не успели еще толком обучить. В карфагенской армии преобладали новобранцы, в римской – опытные ветераны. Чтобы пропустить слонов, Сципион оставил значительные интервалы между манипулами и расставил манипулы в затылок, а не в шахматном порядке. В начале боя римские всадники и их нумидийские союзники рассеяли немногочисленную карфагенскую конницу. Ганнибал атаковал римлян в центре слонами и легкой пехотой. Однако римские метальщики дротиков своим оружием, а также сильным шумом труб и рожков испугали слонов, и те повернули назад, топча свою же пехоту.
Отведя легковооруженных воинов и слонов в тыл, Ганнибал бросил в бой тяжелую пехоту. Первые ряды ливийцев были потеснены римскими легионерами, но потом в дело вступили более опытные македоняне и ополчение карфагенских граждан, которые остановили натиск неприятеля. Затем Ганнибал двинул в обход флангов римлян третью линию, состоящую из ветеранов Второй Пунической войны, против которой Сципион выставил линию ветеранов-триариев. Упорный бой продолжался несколько часов, пока вернувшаяся на поле сражения римская конница не ударила в тыл карфагенянам. Войско Ганнибала обратилось в бегство.
По утверждению Полибия, пунийская армия в битве при Заме потеряла 20 тысяч убитыми и 10 тысяч пленными, а римляне – 2 тысячи убитыми. Победителям досталось 133 знамени и 11 слонов. Цифры карфагенских потерь кажутся многократно преувеличенными, но благоприятный для римлян исход сражения, разумеется, не вызывает сомнений.
В 201 году Карфаген вынужден был согласиться на унизительные условия мира. Весь военный флот в 500 кораблей пришлось передать в руки римлян, которые его тотчас сожгли. Из всех владений пунийцам осталась лишь небольшая территория, прилегающая к Карфагену. Теперь город не имел права ни вести войну, ни заключать мир без разрешения Рима и должен был в течение 50 лет выплатить контрибуцию в 10 тысяч талантов. В результате Второй Пунической войны Римская Республика на шестьсот лет завоевала гегемонию в бассейне Средиземного моря.
Поражение Карфагена было предопределено неравенством людских ресурсов. Рим и его италийские союзники, по утверждению Полибия, за время войны оказались в состоянии выставить 700 тысяч пехотинцев и 70 тысяч всадников. Карфаген такими возможностями не обладал. Ливийцы, нумидийцы, галлы и иберы, служившие в пунийской армии, значительно уступали в численности италикам и не могли при всем желании поставить в распоряжение Ганнибала и других карфагенских полководцев сравнимого количества солдат. Военный гений победителя при Каннах был тут бессилен, равно как и превосходство карфагенских профессионалов над римскими ополченцами.