Вскоре его разведка – 500 человек нумидийской конницы – донесла Ганнибалу, что римская армия в количестве 24 000 человек перекрыла путь в Италию вдоль средиземноморского побережья, расположившись походным лагерем около хорошо укрепленного города Массалии. Ганнибал решил обойти противника севернее, выставив против него заслон из конницы и боевых слонов, и вторгнуться в Северную Италию через Альпийские горы.

Пока Ганнибал пересекал Альпы, римский полководец Публий Корнелий Сципион – отец Сципиона Африканского – спешил в Северную Италию, чтобы отрезать карфагенянам путь. В ноябре 218 года до н. э. армия Ганнибала встретилась на реке Тицин (совр. Тичино) с 25-тысячным римским войском Сципиона.

После легендарного перехода через Альпы, когда Ганнибал потерял почти всю свою армию, в его распоряжении осталось около 20 000 пехоты, 6000 кавалерии и всего несколько слонов. Несмотря на это, в сражении на Тицине римляне понесли большие потери, карфагеняне истребили почти всю вражескую кавалерию. Сам Сципион был тяжело ранен.

Карфагенское войско в декабре 218 года до н. э. одержало еще одну победу: на реке Треббия, к верховьям которой отошел со своей пехотой Сципион, соединившись с армией другого римского полководца, Семпрония. 40 000 римлян расположились здесь в хорошо укрепленном лагере и не желали выходить для битвы в открытое поле. Но Ганнибал перехитрил противника: он позволил ему одержать ряд легких побед над своими небольшими отрядами, одновременно опустошив все селения вокруг неприятельского лагеря. Ложная атака нумидийской конницы, перешедшей реку и выманившей из лагеря за собой римскую конницу, явилась прологом большой битвы. Снова большие потери понесла римская кавалерия.

Римляне со дня на день ожидали приближения войск Ганнибала к самому Риму и не видели ни надежды на спасение, ни возможности получить помощь извне или эффективно сопротивляться. Однако Рим не являлся первостепенной целью Ганнибала. Перезимовав в долине реки Паду, карфагеняне и галлы предприняли наступление в Центральную Италию. Здесь, весной 217 года до н. э. Ганнибал совершил первый в истории обходной маневр. Перейдя через занесенные снегом Апеннинские перевалы севернее Генуи, он прошел на юг вдоль морского побережья и за четыре дня форсировал топкие болота в пойме реки Арн (Арно), считавшейся непроходимой во время весеннего паводка.

Спустившись с Апеннин, карфагеняне и галлы неожиданно для противника оказались между римскими армиями, блокировавшими главные дороги на Рим, и самим Вечным Городом. Ганнибал двинулся к Плаценции, где вскоре произошло сражение. Но в итоге битва при Плаценции закончилась вничью… Две главные дороги, ведущие в Центральную Италию и на Рим, которые обошел Ганнибал, были блокированы войсками консулов Гая Фламиния и Гнея Сервилия.

Местность у Арретии (Ареццо), где стояли войска Фламиния, Ганнибал не счел удобной для боя и, оставив лагерь противника слева, двинулся к Фэсулам, а потом пошел, не встречая сопротивления, уже по направлению к Риму, разоряя и уничтожая мирное население, сжигая дома и хозяйственные постройки. Фламиний бросился следом. Увидав, что римские войска приближаются, Ганнибал, избрав для сражения гористый район неподалеку от горы Картоны, возле Тразименского озера, велел своим солдатам изготовиться к бою. В апреле 217 года до н. э. Ганнибал напал из засады на армию Фламиния, проявившего большую неосторожность: оказавшиеся в узком шестикилометровом проходе между горами и озером римляне попали в западню. Около 30 000 солдат вместе с Фламинием сложили головы, остальные бежали в горы.