Hannibalin isä Hamilcar oli karthagolaisten joukkojen komentaja ensimmäisen Punisen sodan lopussa. Kun Karthago oli hävinnyt sodan, Hamilcar siirtyi Hispaniaan valloittaakseen nykyisen Espanjan alueen heimot. Tämän hyökkäyksen aikaan Karthago oli huonossa kunnossa. Sen laivasto ei kyennyt kuljettamaan armeijaa Iberiaan (Hispaniaan). Hamilcar joutui marssimaan kohti Herkuleksen pylväitä ja ylittämään Gibraltarin salmen. Erään Liivin tarinan mukaan Hamilcar sai Hannibalin lupaamaan, ettei hänestä koskaan tulisi Rooman ystävää. Hannibal kertoi isälleen:
Vannon, että niin pian kuin ikä sallii... käytän tulta ja terästä pysäyttääkseni Rooman kohtalon.
Vastineeksi Hamilcar suostui ottamaan Hannibalin mukaansa Hispaniaan. Hamilcar käytti kaksi vuotta Ebro-joen eteläpuolisen Iberian valloituksen loppuun saattamiseen. Hän kuoli vuonna 229/228 taistelussa, todennäköisesti hukkumalla Jucar-jokeen. Hänen vävynsä Hasdrubal otti komennon, mutta hänet murhattiin vuonna 221 eaa.
Hasdrubalin kuoltua Hannibalista tuli armeijan johtaja. Rooma pelkäsi Hannibalin kasvavaa voimaa. He tekivät liiton Saguntumin kaupungin kanssa ja väittivät suojelevansa kaupunkia. Saguntum sijaitsi Ebrojoen eteläpuolella. Hannibal hyökkäsi kaupunkiin tämän vuoksi. Se vallattiin kahdeksan kuukauden kuluttua. Tämän Rooman liittolaiseen kohdistuneen hyökkäyksen vuoksi Rooma halusi oikeutta Karthagolta. Sen sijaan Karthagon hallitus ei nähnyt Hannibalin toiminnassa mitään väärää. Hannibalin haluama sota julistettiin vuoden lopussa.
Maaseutumatka Italiaan
Hannibalin armeijaan kuului jopa 75 000 jalkaväen sotilasta ja 9 000 ratsumiestä. Hannibal lähti "Uudesta Karthagosta" loppukeväällä 218 eaa. Hän taisteli tiensä pohjoiseen Pyreneille. Hän kukisti heimot taitavalla vuoristotaktiikalla ja sitkeällä taistelulla. Marssittuaan 290 mailia Hispanian halki ja päästyään Ebro-joelle Hannibal valitsi libyalaisista ja iberialaisista palkkasotureista koostuvan armeijansa luotettavimmat ja uskollisimmat osat jatkamaan matkaa mukanaan. Hän jätti 11 000 sotilasta vahtimaan juuri valloitettua aluetta. Pyreneillä hän päästi irti toiset 11 000 iberialaista sotilasta. Hannibal saapui Galliaan 50 000 jalkaväen sotilaan ja 9 000 ratsumiehen kanssa.
Hannibalin oli ylitettävä Pyreneet, Alpit ja monet alueen tärkeät joet. keväällä 218 eaa. alkaen hän taisteli tiensä Pyreneille. Hän teki rauhansopimuksia gallialaisten heimojohtajien kanssa ja saavutti Rhône-joen. Rhône-joelle syyskuussa saapuneen Hannibalin armeijaan kuului 38 000 jalkaväkeä, 8 000 ratsumiestä ja kolmekymmentäseitsemän sotanorsua.
Hannibal pääsi pakenemaan Galliassa häntä vastaan taistelemaan lähetettyjä roomalaisia joukkoja. Sitten hän lähti yhden Rhône-joen virran laaksoon. Syksyyn mennessä hän saavutti Alppien juuret. Hänen matkansa vuorten yli on yksi kaikkien sotavoimien kuuluisimmista saavutuksista. Tämän matkan jälkeen Hannibal laskeutui alppien juurelta Pohjois-Italiaan roomalaisten yllätykseksi. Hän oli saapunut paikalle vain puolet siitä joukosta, jolla hän oli lähtenyt liikkeelle, ja vain muutama elefantti. Hannibal oli menettänyt jopa 20 000 miestä ylittäessään vuoret.
Trebbian taistelu
Publius Cornelius Scipio johti Hannibalin pysäyttämiseksi lähetettyjä roomalaisia joukkoja. Hän ei odottanut Hannibalin ylittävän Alppeja. Hän odotti taistelevansa Hannibalia vastaan Espanjassa. Scipio yritti pysäyttää Hannibalin pienellä armeijallaan, joka oli vielä Galliassa. Hän siirsi armeijansa meriteitse Italiaan hyvissä ajoin ennen Hannibalin kohtaamista. Hannibal teki taakseen jääneen alueen turvallisemmaksi kukistamalla Taurini-heimon (nykyinen Torino). Vastakkain olevat joukot taistelivat Karthagossa. Täällä Hannibal pakotti roomalaiset pois Lombardian tasangolta. Tämä voitto heikensi suuresti roomalaisten hallintaa gallialaisista. Gallialaiset päättivät liittyä karthagolaisiin. Pian koko Pohjois-Italia oli epävirallisesti liittoutunut. Gallialaiset ja liguurilaiset joukot nostivat hänen armeijansa pian takaisin 40 000 mieheen. Hannibalin armeija oli valmis hyökkäämään Italiaan. Scipio vetäytyi Trebiajoen yli. Hän leiriytyi Placentian kaupunkiin ja odotti lisää joukkoja.
Senaatti oli määrännyt Sempronius Longuksen tuomaan armeijansa Sisiliasta kohtaamaan Scipion ja kohtaamaan Hannibalin. Hannibal oli asemissa ja pystyi pysäyttämään hänet. Sempronius väisti Hannibalin ja liittyi Scipion seuraan lähellä Trebbia-jokea Placentian lähellä. Trebiassa Hannibal kukisti roomalaisen jalkaväen yllätyshyökkäyksellä sivustalla olevasta väijytyksestä.
Trasimene-järven taistelu
Hannibal saapui Etruriaan keväällä 217 eaa. ja päätti houkutella Flaminiuksen johtaman Rooman pääarmeijan taisteluun. Hannibal löysi Flaminiuksen leiriytyneenä Arretiumissa. Hän marssi vastustajansa vasemman puolen ympäri ja katkaisi Flaminiuksen yhteyden Roomaan. Hannibal pakotti Flaminiuksen ajamaan häntä takaa. Trasimenus-järven rannalla Hannibal tuhosi Flaminiuksen armeijan vesille tai läheisille rinteille. Hän tappoi myös Flaminiuksen. Hän oli päässyt eroon ainoasta joukosta, joka saattoi estää häntä pääsemästä Roomaan. Hän tajusi, että ilman piirityskoneita hän ei voinut toivoa valtaavansa pääkaupunkia, joten hän päätti jatkaa matkaansa Keski- ja Etelä-Italiaan. Hän toivoi, että tämä voimannäyttö synnyttäisi kapinan Rooman hallitusta vastaan. Trasimene-järven jälkeen Hannibal sanoi: "En ole tullut taistelemaan italialaisia vastaan, vaan italialaisten puolesta Roomaa vastaan."
Fabius
Rooma joutui suunnattomaan paniikkitilaan. He nimittivät diktaattorin nimeltä Quintus Fabius Maximus. Hän oli älykäs ja huolellinen kenraali.
Fabius omaksui "Fabianin strategian". Hän kieltäytyi avoimesta taistelusta vihollisensa kanssa ja asetti useita roomalaisia armeijoita Hannibalin lähelle rajoittaakseen tämän liikkumista. Fabius lähetti pieniä joukkoja Hannibalin metsästysjoukkoja vastaan. Pienten pohjoisten kylien asukkaita kehotettiin asettamaan vartijoita. He saattoivat kerätä karjaansa ja omaisuutensa ja mennä linnoitettuihin kaupunkeihin. Tämä heikentäisi hyökkääjien kestävyyttä.
Hannibal päätti marssia Samniumin kautta Campaniaan. Hän toivoi, että tuho houkuttelisi Fabiuksen taisteluun, mutta Fabius kieltäytyi siitä. Hänen joukkonsa ärsyyntyivät hänen "pelkurimaisuudestaan". Hänen politiikastaan ei pidetty. Roomalaiset olivat tottuneet kohtaamaan vihollisensa kentällä, ja kansa halusi sodan päättyvän nopeasti.
Loppusyksy jatkui usein kahakoinnein. Kuuden kuukauden kuluttua Fabius erotettiin tehtävästään Rooman lain mukaisesti.
Cannaen taistelu
Keväällä 216 eaa. Hannibal valtasi Apulian tasangolla sijaitsevan Cannaen suuren huoltovaraston ja asettui näin roomalaisten ja heidän huoltolähteensä väliin. Rooman senaatti jatkoi konsulivaalejaan vuonna 216. Konsuleiksi valittiin Caius Terentius Varro ja Lucius Aemilius Paullus. Roomalaiset kokosivat historiansa tähän mennessä suurimman armeijan kukistaakseen Hannibalin. Armeijan kokonaisvahvuudeksi on arvioitu noin 80 000 miestä.
Rooman armeija marssi etelään Apuliaan. Kahden päivän marssin jälkeen he löysivät Hannibalin Audifus-joelta. Konsuli Varro oli uhkarohkea ja täynnä ylpeyttä, ja hän oli päättänyt voittaa Hannibalin. Varron ylimielisyys sai yliotteen ja antoi Hannibalin houkutella hänet ansaan. Loistavalla taktiikalla Hannibal piiritti ja tuhosi suurimman osan tästä joukosta.
Arviolta 50 000-70 000 roomalaista kuoli tai jäi vangiksi Cannaessa. Kuolleiden joukossa oli kahdeksankymmentä senaattoria. Rooman senaatissa oli enintään 300 miestä - tämä oli 25-30 prosenttia hallintoelimestä. Cannaen taistelu oli yksi pahimmista tappioista antiikin Rooman historiassa. Se on myös yksi koko ihmiskunnan historian verisimmistä taisteluista yhden päivän aikana menetettyjen ihmishenkien määrällä mitattuna. Cannaen jälkeen roomalaiset kieltäytyivät taistelemasta Hannibalia vastaan taisteluissa. Sen sijaan he yrittivät kukistaa hänet väsyttämällä hänet. He luottivat tarjonta- ja työvoimaetuihinsa.
Tämän voiton ansiosta suurin osa Etelä-Italiasta liittyi Hannibalin puolelle. Samana vuonna Sisilian kreikkalaiskaupungit kapinoivat roomalaisten hallintaa vastaan. Makedonian kuningas Filip V tuki Hannibalia. Tästä alkoi ensimmäinen makedonialainen sota Roomaa vastaan. Hannibal perusti uuden tukikohtansa Capuaan, Italian toiseksi suurimpaan kaupunkiin.
Pattitilanne
Ilman liittolaistensa resursseja tai vahvistuksia Karthagosta Hannibal ei pystynyt enää paljoa tekemään, ja hän alkoi menettää asemiaan. Hän jatkoi roomalaisten kukistamista aina, kun hän sai heidät taisteluun, mutta ei koskaan saanut enää ratkaisevaa voittoa.
Sodan päättyminen Italiassa
Vuonna 212 eaa. Tarentumin salaliittolaiset päästivät Hannibalin kaupunkiin. Sitten he puhalsivat hälytyksen roomalaisilla torvilla. Näin Hannibalin joukot saivat tappaa roomalaiset, kun nämä kompuroivat kaduille. Hannibal käski tarentumilaisia merkitsemään kaikki talot, joissa tarentumilaiset asuivat, jotta niitä ei ryöstettäisi. Ryöstelystä huolimatta linnoitus piti pintansa. Tämä esti Hannibalia käyttämästä satamaa, ja Rooma sai hitaasti etumatkaa Hannibaliin. Samana vuonna hän menetti Campanian.
Vuonna 211 eaa. Capuan kaupunki kukistui. Saman vuoden kesällä roomalaiset tuhosivat karthagolaisen armeijan Sisiliassa. Samaan aikaan Hannibal oli voittanut Fulviuksen Herdoneassa Apuliassa, mutta menettänyt Tarentumin. Kun Tarentum menetettiin vuonna 209 eaa. ja roomalaiset valtasivat Samniumin ja Lucanian, Hannibalin ote Etelä-Italiasta oli lähes menetetty.
Vuonna 207 eaa. hän vetäytyi Bruttiumiin. Nämä tapahtumat merkitsivät Hannibalin menestyksen loppua Italiassa. Vuonna 203 eaa. Hannibal kutsuttiin takaisin Karthagoon johtamaan kotimaansa puolustusta roomalaisten hyökkäystä vastaan.