Захваченные врасплох, римляне, тем не менее, сражались героически, но Ганнибал мастерски использовал свою кавалерию и слонов. Большая часть римской армии была уничтожена, а жившие на этой территории галлы, узнав о великой победе и почуяв возможность реванша над римлянами, которые совсем недавно разгромили их и оккупировали долину По, перешли на сторону Ганнибала.
Пока римляне собирались с силами, Ганнибал простоял всю зиму лагерем. Затем весной 217 г. до н. э. он провел свою армию через Апеннины на 275 миль к окрестностям Тразименского озера, которое находилось всего в ста милях севернее Рима. Та зима и переход через горы в весеннее время были, конечно, нелегкими. Погибли все слоны, кроме одного. На каком-то участке пути войскам пришлось идти четыре дня по дороге, где не было ни клочка сухой земли. Во время последовавшей за этим эпидемии Ганнибал подхватил инфекцию и в результате ослеп на один глаз.
У Тразименского озера Ганнибал заметил тянувшуюся вокруг него узкую дорогу с холмами по сторонам. Он знал, что новая римская армия уже близко, поэтому разместил своих воинов позади холмов и стал ждать. Римская армия, проскользнув по узкой дороге, подошла утром, и небольшой туман способствовал тому, что она не заметила ожидавшего ее противника. Когда все римляне вышли на длинную узкую полосу вдоль дороги, войска Ганнибала хлынули на нее на всем ее протяжении и разбили их в пух и прах. Римская армия была уничтожена, и эта победа досталась Ганнибалу почти даром.
Теперь путь на Рим был открыт. Если у Ганнибала и был соблазн сразу идти на Рим, то он ему не поддался. Он не имел осадных орудий, а римские стены были прочными и дух римлян неукротим. Если начать осаду, его армия потеряет всю свою силу.
У Ганнибала оставался единственный шанс: поднять против Рима всю Италию. В прошедшее столетие итальянцев завоевывали постепенно, и они не имели пока римского гражданства. Если они узнают, что римлян разгромили, то, возможно, начнут бороться за свое освобождение, и Ганнибал предложит им не власть Карфагена, а самоуправление.
Первая из его побед — в двух сражениях на реке По — убедила практически не покорившихся римлянам галлов, но даже вторая победа, у Тразименского озера, не убедила долгое время подавляемых итальянцев. Ему нужна была третья. Пока все выглядело так, будто римляне не предоставят ему такого шанса, поскольку наиболее предусмотрительные из них советовали избегать боевых действий и дать армии Ганнибала развалиться самой по себе. Это была тактика не из легких для гордых людей, привыкших к победам, и вскоре их убедили сделать еще одну попытку.
Ганнибал продолжал двигаться по Италии на юг, демонстрируя презрение к могуществу Рима, и в 216 г. до н. э. еще одна римская армия, самая многочисленная, начала преследование. Она нагнала его у Канн, города на берегу Адриатического моря примерно в 200 милях юго-восточнее Рима.
По численности римская армия почти вдвое превосходила армию Ганнибала — 86 тысяч против 50 тысяч — и жаждала ввязаться в драку. Ганнибал решил уступить прихоти римлян. Он выдвинул вперед пехоту, поставив ее дугой, и, когда римляне пошли в атаку, пехотинцы начали медленно отступать назад, сначала прямыми рядами, а потом в виде обратной дуги.
Все это время фланги войск Ганнибала оставались на месте. Видимо, рвавшиеся вперед римляне не обратили внимания на фланги. Казалось, передовые части в центре фронта отступают, нужно нанести только еще один удар, и тогда Ганнибал будет уничтожен. Но Ганнибал отлично знал, что делал. Он тщательно контролировал ситуацию и позволил передовой линии прогибаться в обратную сторону, пока разъяренные римляне не оказались в мешке, окруженные с грех сторон воинами Ганнибала. И только тогда Ганнибал подал сигнал. Фланги сомкнулись, и карфагенская кавалерия, стоявшая широким кольцом, ринулась в затягивающееся отверстие мешка, чтобы не дать римлянам уйти.
И снова римлянам устроили кровавую бойню. Битва при Каннах представляет собой, возможно, величайший в военной истории образец полной победы малочисленной армии над превосходящими силами противника. Все решил военный гений единственного человека — Ганнибала. Он сражался с римлянами четыре раза: у Тицина, Требии, Тразименского озера и у Канн — и каждый раз одерживал грандиозную победу.
Когда Ганнибал выиграл битву при Каннах, казалось, весь план, который разработал и так великолепно проводил в жизнь его отец, будет успешно выполнен. После его грандиозной победы вся римская система в Италии действительно начала разваливаться. Некоторые италийские города стали переходить на сторону Ганнибала, это было таким же значительным моральным поражением Рима, как и военное поражение при Каннах. Более того, на сторону Ганнибала перешел морской порт Капуа, который можно было использовать в качестве надежной базы зимой 216 г. до н. э.
В чем он нуждался, так это в подкреплении. Ему нужны были свежие силы, новые воины, хорошо обученные и преданные Карфагену, ибо большинство ветеранов погибли. Разумеется, Ганнибал использовал италийцев, перешедших на его сторону, и, вдохновленные его гением, они никогда его не подводили, но ему нужно было много воинов. Он нуждался в продовольствии, в осадных орудиях. Все это могло прийти из Карфагена. Однако этого не произошло. Правившими в городе купцами овладело недоверие к Ганнибалу, боязнь, что победы сделают его всесильным на родине в ущерб им. Они утверждали: его победы — свидетельство того, что он ни в чем не нуждается, и велели продолжать завоевания. Но Ганнибал был всего лишь самым великим полководцем всех времен, и никем более.
Римляне, хорошо усвоив урок, никогда больше не воевали с Ганнибалом в Италии в чистом поле. Вместо этого они начали вести войны на периферии. Невзирая на угрозу, нависшую над собственным домом, Рим послал войска за границу с целью покорить Сиракузы и вторгнуться в Испанию. Власти Карфагена, страшась потерять испанские серебряные рудники, направили подкрепление не в Италию, а туда.
Ганнибал, навеки преданный своему вероломному городу, воевал в Италии несколько лет, и его надежды таяли. Он ждал подкрепления, которое так и не пришло, ждал раскола римлян, который так и не произошел, ждал случая для нового сражения, и не дождался. В 212 г. до н. э. Ганнибал оказался на самом юге Италии, захватив несколько греческих городов.
Ганнибалу приходилось рассчитывать только на помощь из Испании, которая оставалась на попечении его брата Гасдрубала. В 208 г. до н. э. Гасдрубал в ответ на призыв брата решил повторить подвиг Ганнибала десятилетней давности. Уклоняясь от встречи с римлянами, он провел свою армию через Испанию и Галлию, переправился через Альпы и обрушился на Италию. Наконец Ганнибал получил подкрепление, но при условии, что он сможет соединиться с братом. Однако Ганнибал находился на юге Италии, а Гасдрубал — на севере. Гасдрубал слал Ганнибалу донесения, сообщая о плане передвижения и месте встречи. К несчастью, эти донесения были перехвачены и попали в руки римлян, поэтому они знали, где собирается быть Гасдрубал, а Ганнибал — нет. И это явилось поворотным моментом в войне.
Римляне объединили свои силы, рискнув оставить Ганнибала без присмотра, и встретили войска Гасдрубала на берегах реки Метавр, примерно в 120 милях северо-восточнее Рима, на побережье Адриатики. Гасдрубал попытался уйти от сражения, но не мог найти брод и потерял много времени на его поиски. Когда брод нашли, было уже поздно. Римляне оказались рядом, он не был к этому готов, и неизбежным финалом стала полная победа Рима.
Гасдрубал погиб вместе со своей армией, и весть об этом дошла до Ганнибала ужасным способом. Римляне отрезали Гасдрубалу голову, привезли ее на юг и подбросили в лагерь Ганнибала. Теперь Ганнибал должен был понять, что последняя надежда улетучилась, но он не сдался. Он отошел на самый юг Италии и держался там еще несколько лет. И даже тогда римляне не осмеливались впрямую нападать на него.