219 m. pr. Kr. Hannibalas apgulė, užėmė ir išgrobė pro-romėnų Sagunto miestą, todėl 218 m. pr. Kr. pavasarį romėnai Kartaginai paskelbė karą. Tąmet Hannibalis nustebino romėnus, iškeldamas savo kariuomenę iš Iberijos, per Galiją ir per Alpus.
į Cisalpinę Galiją (dabartinę šiaurės Italiją). Galijų sąjungininkų padedamas, jis iškovojo smarkų pergalę prieš romėnus Trebijos (218) ir Trasimeno ežero (217) mūšiuose. 216 m. Hannibalis persikėlė į pietų Italiją ir vėl nugalėjo romėnus Kanos mūšyje, kur sunaikino didžiausią armiją, kurią romėnai kada nors buvo surinkę. Per mažiau nei dvejus metus žuvo arba buvo paimti į nelaisvę daugiau kaip 120 tūkst. romėnų karių, o daugelis Romos sąjungininkų iš Italijos, ypač Kapua, pasitraukė į Kartaginą, suteikdami Hannibaliui kontrolę daugelyje pietinių Italijos teritorijų. Sirakūzės ir Makedonijos prisijungus prie Kartaginos pusės po Kanų, konfliktas išplito. Tarp 215 ir 210 m. pr. m. e. kartaginai bandė užimti romėnų kontroliuojamą Siciliją ir Sardiniją, tačiau nesėkmingai. Romėnai ėmėsi drastiškų žingsnių, kad susikurtų naujus legionus, į juos įtraukdami vergus, nusikaltėlius ir tuos, kurie neatitiko įprastų nuosavybės reikalavimų, ir taip labai padidino savo karių skaičių. Kitas dešimtmetis karas Pietų Italijoje tęsėsi, kai Romos armija pamažu užėmė daugumą Italijos miestų, prisijungusių prie Kartaginos.