Ганнибал принял все меры для безопасности своего тыла, усилив гарнизон Карфагена и оставив значительные воинские силы под командованием своего брата Гасдрубала в Иберии. В распоряжении Ганнибала находилось войско из 90 тысяч пехоты, 12 тысяч конницы и 37 боевых слонов. Однако после передачи в восточную Иберию части своего войска и понесенных потерь в боях с икуртетами у Ганнибала осталось лишь 50 тысяч пехоты и 9 тысяч конницы. Эти пунийские войска и двинулись к Альпам.
Пройдя через земли галлов на Пиренеях, армия Ганнибала к середине лета 218 года до н э. достигла реки Родан, и после первых стычек с римскими войсками под командованием консула Публия Сципиона Ганнибал на плотах-паромах смог переправить свои войска через Рону. Он стремился сохранить свои силы и потому избегал столкновений с римскими войсками.
С приближением Ганнибала к Альпам все племена кельтов восстали против Рима и перешли на сторону Ганнибала, пополнив его войска. В ноябре армия пунийцев начала переправу через Альпы и после труднейшего перехода вышла на равнину. За переход армия сократилась более чем наполовину, в ней осталось 20 тысяч пехоты, 9 тысяч конницы и несколько боевых слонов.
Дав своей армии отдых, Ганнибал перевел ее на земли тавринов, воевавших с инсубрами. Инсубры установили дружественные отношения с Ганнибалом, а тот помог им разгромить тавринов и взять их столицу Таврисию (Турин). После разгрома тавринов на сторону Ганнибала перешли остальные галльские племена.
В первых же сражениях при Тицине и Треббии римские войска были разгромлены. Немалую роль сыграли в этом пунийская конница, действовавшая на равнинах, а также полководческий талант Ганнибала, который сумел навязать римлянам бой в невыгодных для них условиях. Вся Северная Италия оказалась под контролем Ганнибала. Цизальпинская Галлия стала его базой, обеспечивающей продовольствием и живой силой.
Весной 217 года до н э. Ганнибал через Этрурию решил двигаться в Центральную Италию к Риму. Предварительно он провел разведку дорог и вскоре выяснил, что почти все они хорошо известны противнику, кроме той, которая проходит через болота. Именно она позволяла нанести внезапный удар по римским войскам, которыми командовал Гай Фламиний.
В течение четырех дней и трех ночей армия Ганнибала шла по дороге, покрытой водой, через топкие болота с ядовитыми испарениями. Ганнибал вышел в тыл войскам Фламиния в районе Тразименского озера. Здесь им была организована засада, в которую попала, а затем была уничтожена армия Фламиния.
Однако после этой победы Ганнибал не пошел на Рим, а занялся созданием коалиции из подчиненных Риму племен. Против Рима восстали почти все племена Северной Италии, кроме ценоманов. Через Умбрию Ганнибал двинулся к побережью Адриатического моря на Апулию; он рассчитывал разрушить римско-италийский союз в Центральной и Южной Италии. После официального сообщения Ганнибала в Карфаген о боевых действиях за два года карфагенский сенат принял решение оказать помощь пунийцам в Италии и Испании.
С назначением диктатором Фабия Максима Ганнибал стал терпеть неудачи. Для пополнения запасов продовольствия пунийцам приходилось отлучаться из лагеря или с места стоянки. Большей частью фуражиры погибали от рук римлян. Армия Ганнибала стала уменьшаться, а обещанные сенатом подкрепления не приходили.
Ганнибал не встретил поддержки в Центральной Италии и был вынужден прибегнуть к жестоким репрессиям, что еще более настроило против Ганнибала местное население. Его надежды на восстание рабов в Риме также не оправдались.
После зимовки в лагере около Гереония в 217—216 годах до н э. Ганнибал продолжал оставаться в Апулии. Здесь он одержал одну из самых громких своих побед, разгромив римские войска при Каннах (2 августа 216 года до н э.). В этом сражении были уничтожены около 70 тысяч римлян. Однако и тогда пунийский полководец не пошел на Рим со своей ослабленной армией. Карфагенский сенат по-прежнему не поддерживал Ганнибала ни деньгами, ни флотом, ни воинами, опасаясь усиления его войска. А сам Ганнибал все еще надеялся на выступления против Рима его союзников. Медлительность Ганнибала помогла Риму восстановить боеспособность своей армии. Однако для Рима стало страшным испытанием не столько поражение при Каннах, сколько переход на сторону Карфагена италийских общин, прежде всего самнитов, надеявшихся избавиться от римского порабощения. Ганнибалу удалось овладеть Самнием, Компсом и столицей Кампании Капуей, вторым по значению городом Италии. От исхода битвы за Капую зависело, какую позицию займут колеблющиеся общины.
Капуанцы вступали в союз с Ганнибалом с целью захвата власти над всем Апеннинским полуостровом. Так же как и Капуя, другие италийские города добивались равноправного союза с Ганнибалом, который обещал сохранить их независимость, земли, а также освободить от всех повинностей и налогов.
Скоро Ганнибал убедился, что его планы по созданию антиримской коалиции из центральных, южноиталийских и греческих городов во главе с Капуей терпят провал. Несмотря на все попытки подчинить себе города Кампании, Ганнибал и примкнувшая к нему Капуя так и не смогли добиться успеха.
Численность пунийской армии продолжала уменьшаться Чтобы отвлечь силы римлян, Ганнибал заключил союз с царем Македонии Филиппом V, который надеялся вернуть Иллирию, частично находившуюся под властью Рима. Ганнибал также рассчитывал на создание антиримского союза из эллинистических государств. К союзу с ним присоединились Сиракузы, рассчитывавшие освободиться от римской зависимости.
Ганнибал понимал, что с имеющимися силами он не может ни захватить Рим, ни покорить латинов, и продолжал надеяться на помощь сената. Снабжение пунийского войска продолжало ухудшаться, союзники отказывались брать на постой его армию, а грабить их Ганнибал не мог, поскольку это могло бы окончательно оттолкнуть их от него. Ганнибалу пришлось довольствоваться разорением земель римских союзников.
В 212 году до н э. после продолжительной осады римляне овладели Капуей. Во время осады Ганнибал почти вплотную приблизился к городу, чтобы оказать помощь капуанцам, но так и не смог прорваться сквозь римские заслоны.
Ганнибал решил устроить демонстративный поход на Рим, чтобы отвлечь внимание от осажденной Капуи, но римляне скоро убедились, что реальная опасность отсутствует. Ганнибал не смог ни овладеть Римом, ни поднять против Рима латинские племена и снова ушел на юг Апеннинского полуострова.
Сразу же после падения Капуи от Ганнибала стали отпадать присоединившиеся к нему италийские города. Ганнибал был вынужден размещать в них гарнизоны и еще более ослаблял свое войско. Иногда он прибегал к жестоким репрессиям в отношении изменивших ему городов, и это еще более настраивало против него их население.
Не получая подкреплений из Карфагена, Ганнибал уже потерпел несколько поражений в сражениях с римлянами в Центральной Италии. Здесь он рассчитывал на соединение с войском своего брата Гасдрубала, шедшего из Италии. Однако в 207 году до н э. армия Гасдрубала была разбита в сражении на реке Метавре, а сам командующий погиб.
С разгромом войска Гасдрубала Ганнибал лишился последней надежды на подкрепление. С остатками своего войска он удалился на самую крайнюю точку Апеннинского полуострова – в город Бруттий. Он даже не смог оказать помощь своему брату Магону, высадившемуся с войском в Лигурии.
Постепенно главный театр военных действий перемещался в Африку, куда весной 204 года до н э. высадились легионы Сципиона. Но Ганнибал продолжал оставаться в Италии. Карфагенский сенат был готов уже заключить мир с Римом, но встретил сопротивление со стороны группировки Баркидов, которые настаивали на необходимости отзыва Ганнибала из Италии, надеясь, что непобедимый полководец сможет изменить ход войны.
Осенью 203 года до н э. Ганнибал с остатком своего войска высадился у города Лептиса и поспешил в глубь страны, где уже находились римляне. Ему удалось установить контакты с некоторыми нумидийскими племенами и ливийскими городами и общинами.