В сентябре 218 года до н. э. состоялся знаменитый поход Ганнибала из Испании в Италию. Карфагенская 60-тысячная армия с 40 боевыми слонами совершила беспримерный для того времени 15-дневный переход через заснеженные Альпы, спустилась в долину реки По и «внезапно возникла» на равнинах Северной Италии. Хорошо обученные карфагеняне одержали две победы над римлянами — на берегах рек Тицина (Тичино) и Треббия. В первом сражении Ганнибал разбил силы Сципиона, полностью разгромив его кавалерию. Полководец с оставшимися пехотинцами отступил к верховьям реки Треббии и присоединился к силам другого римского военачальника — Лонга. В это время галлы оставили римскую армию и перешли на сторону Ганнибала, заметно увеличив численность его войска.
На реке Треббии римляне стали укрепленным лагерем и не хотели покидать его для битвы. Но Ганнибал был хитрее Сципиона и Лонга: он позволял противнику одерживать легкие победы над небольшими отрядами карфагенян, одновременно опустошая селения вокруг лагеря неприятеля. В декабре 218 года до н. э. ложная атака нумидийской конницы, форсировавшей реку и выманившей из лагеря римскую конницу, стала прологом большой битвы.
Лонг готовился к выборам консулов и хотел прославиться как победитель карфагенян. Вслед за конницей он вывел из лагеря пехоту, которая перешла Треббию, основательно замерзнув в холодной речной воде. Битва началась с действий легковооруженных пехотинцев, а закончилась обходами более многочисленной карфагенской конницы с флангов. Римские войска были разбиты, особенно крупные потери понесла кавалерия.
Армия Рима отступала на юг, и карфагеняне заняли всю Цизальпийскую Галлию. Тогда Ганнибал направился в Среднюю Италию, где его уже поджидали значительные военные силы противника. Во время перехода через болота у Ганнибала началось тяжелое воспаление глаз, в результате он лишился одного глаза, и затем ему пришлось носить повязку.
В 217 году до н. э. на берегах Тразименского озера произошло сражение между армией Ганнибала и 40-тысячным войском римского консула Фламиния. Римляне попали в засаду, коварно устроенную карфагенянами неподалеку от Тразименского озера. Армия во главе с Фламинием выступила в путь в предрассветном тумане, не произведя разведки. Балеарские стрелки, африканская пехота и пешие галлы неожиданно напали с гор на колонну римлян. В результате 15 тысяч римских легионеров, в том числе и Фламиний, погибли. Остатки армии разбежались или были уничтожены преследователями. После сражения победители опустошили плодородную Кампанию, а ее население бежало в Рим.
Ганнибал продолжил наступление на юг Апеннинского полуострова. В столкновениях с римлянами его армия неизменно демонстрировала слаженные действия пехоты и конницы, да и противостоять боевым слонам римляне так и не научились.
В 216 году до н. э. произошла крупная битва при Каннах, в которой римские войска под командованием Варрона и Эмилия потерпели сокрушительное поражение. Ганнибал, умело построив свою армию, решительно атаковал римские легионы (карфагеняне были выстроены в форме серпа, в центре которого находилась пехота, а по краям — африканская конница). Используя маневренную легкую конницу, полководец окружил и уничтожил главные силы неприятеля. В битве при Каннах погибло около 50 тысяч римских воинов и 6 тысяч были взяты в плен; карфагеняне же потеряли 6 тысяч человек.
После разгрома римской армии Ганнибалу представилась прекрасная возможность пойти на Рим — он находился всего лишь в 130 километрах и впереди не было значительных сил римлян, — но полководец ею не воспользовался. Когда же его войска появились недалеко от Вечного города, была уже вновь сформирована многочисленная римская армия.
Победа карфагенской армии Ганнибала при Каннах не сломила республиканский Рим и не привела к распаду римско-итальянского союза, на что очень надеялся полководец. Его обращение к совету старейшин с настоятельной просьбой прислать из Карфагена подкрепление осталось без ответа. Он мог рассчитывать только на собственные силы, которые после каждого боевого столкновения с римлянами ощутимо уменьшались.
Не получив подкреплений из Карфагена, Ганнибал обратился за помощью к младшему брату Гасдрубалу, командовавшему карфагенскими войсками в Испании. Тот откликнулся на его призыв, но о переходе войск Гасдрубала стало известно римскому полководцу Клавдию Нерону. В 207 году до н. э. римляне устроили засаду у реки Метавр и разбили карфагенян, а в доказательство своей победы отрубили Гасдрубалу голову и послали Ганнибалу.