В сентябре 218 года полководец во главе 60-тысячной армии и с 40 боевыми слонами (такой «техники» римляне не имели, и мало кто из них видел боевых слонов) предпринял свой знаменитый поход из Испании в Италию. Карфагенская армия совершила беспримерный для своего времени 15-дневный переход через снежные Альпы, спустилась в долину реки По и внезапно появилась на равнинах Северной Италии. Более того, по пути Ганнибал сделал своими союзниками местных галлов, традиционных врагов римлян.
Хорошо обученное и дисциплинированное карфагенское войско одержало две победы над римлянами – на берегах рек Тицина (Тичино) и Треббия. В первом из них Ганнибал разбил полководца Сципиона, истребив всю его кавалерию. Тот отошел со своей пехотой к верховьям реки Треббия и соединился там с армией другого римского полководца, Ланга. В это время войска галльских племен оставили армию Рима и перешли на сторону Ганнибала, заметно увеличив численность его войска.
Затем состоялось сражение на реке Треббия. Римляне здесь расположились в хорошо укрепленном лагере и не желали выходить для битвы в открытое поле. Однако Ганнибал перехитрил Сципиона и Ланга: он позволял противнику одерживать легкие победы над своими небольшими отрядами, одновременно опустошив все селения вокруг неприятельского лагеря. В декабре 218 года ложная атака нумидийской конницы, перешедшей реку и выманившей из лагеря за собой римскую конницу, стала прологом большой битвы.
Ланг, готовившийся к выборам консулов, мечтал прославиться как победитель карфагенян. Вслед за конницей он вывел из лагеря пехоту, которая форсировала Треббию и основательно промерзла в холодной речной воде. Битва началась с действий легкой пехоты, а закончилась фланговыми обходами более многочисленной карфагенской конницы. Римские войска были разгромлены, особенно большие потери понесла их кавалерия.
Римская армия отступала на юг, и карфагеняне заняли всю Северную Италию. Тогда Ганнибал двинулся в Среднюю Италию, где его уже поджидали значительные военные силы противника.
В 217 году на берегах Тразименского озера произошло сражение между армией Ганнибала и 40-тысячным войском римского консула Фламиния. В ходе сражения римляне попали в засаду, устроенную им карфагенянами в дефиле у Тразименского озера. Фламиний во главе своей армии без должной разведки в предрассветном тумане выступил в путь. Балеарские стрелки, африканская пехота и пешие галлы неожиданно напали с гор на колонну римлян. 15 тысяч римских легионеров, в том числе и Фламиний, были