Hannibals far, Hamilcar, var øverstkommanderende for de karthagiske styrker i slutningen af den første puniske krig. Efter at Karthago tabte krigen, drog Hamilcar over til Hispania for at erobre stammerne i det nuværende Spanien. På tidspunktet for denne invasion var Karthago i en dårlig forfatning. Dens flåde kunne ikke bære dens hær til Iberien (Hispania). Hamilcar var nødt til at marchere mod Herkules' søjler og gå over Gibraltarstrædet. Ifølge en historie i Livy fik Hamilcar Hannibal til at love Hannibal, at han aldrig ville blive Roms ven. Hannibal fortalte det til sin far:
Jeg sværger, så snart alderen tillader det... vil jeg bruge ild og stål til at stoppe Roms skæbne.
Til gengæld gik Hamilcar med til at tage Hannibal med sig til Hispania. Hamilcar brugte to år på at afslutte erobringen af Iberien syd for floden Ebro. Han døde i 229/228 i kamp, sandsynligvis ved at drukne i Jucar-floden. Hans svigersøn Hasdrubal overtog kommandoen, men blev myrdet i 221 f.Kr.
Med Hasdrubals død blev Hannibal leder af hæren. Rom frygtede Hannibals voksende styrke. De indgik en alliance med byen Saguntum og hævdede at beskytte byen. Saguntum lå syd for floden Ebro. Hannibal angreb byen på grund af dette. Den blev erobret efter otte måneder. Med dette angreb på en romersk allieret ønskede Rom retfærdighed fra Karthago. I stedet så den karthagiske regering intet galt i Hannibals handlinger. Den krig, som Hannibal ønskede, blev erklæret i slutningen af året.
Landtransport til Italien
Hannibals hær bestod af op til 75.000 fodfolk og 9.000 ryttere. Hannibal forlod "Ny Karthago" i slutningen af foråret 218 f.Kr. Han kæmpede sig vej nordpå til Pyrenæerne. Han besejrede stammerne ved hjælp af en klog bjergtaktik og stædige kampe. Efter at have marcheret 290 miles gennem Hispania og nået Ebro-floden valgte Hannibal de mest troværdige og loyale dele af sin hær af libyske og iberiske lejesoldater til at fortsætte med ham. Han efterlod 11.000 tropper til at holde vagt over det nyerobrede område. Ved Pyrenæerne lod han endnu 11.000 iberiske tropper gå. Hannibal gik ind i Gallien med 50.000 fodfolk og 9.000 ryttere.
Hannibal skulle krydse Pyrenæerne, Alperne og mange vigtige floder i regionen og kæmpede sig fra foråret 218 f.Kr. frem til Pyrenæerne. Han indgik fredsaftaler med de galliske stammeledere og nåede frem til Rhônefloden. Ved ankomsten til Rhône i september talte Hannibals hær 38.000 infanterister, 8.000 ryttere og 37 krigselefanter.
Hannibal slap væk fra en romersk styrke, der blev sendt for at bekæmpe ham i Gallien. Han gik derefter op i dalen af en af Rhône-flodens floder. Om efteråret nåede han frem til foden af Alperne. Hans rejse over bjergene er en af de mest berømte præstationer af nogen militærstyrke. Efter denne rejse kom Hannibal ned fra foden af bjergene til Norditalien, til romernes overraskelse. Han var ankommet med kun halvdelen af de styrker, han var startet med, og kun nogle få elefanter. Hannibal havde mistet op til 20.000 mand ved overgangen over bjergene.
Slaget ved Trebbia
Publius Cornelius Scipio havde kommandoen over den romerske styrke, der skulle stoppe Hannibal. Han forventede ikke, at Hannibal ville krydse Alperne. Han forventede at kæmpe mod Hannibal i Spanien. Med en lille hær stadig i Gallien forsøgte Scipio at stoppe Hannibal. Han flyttede sin hær til Italien ad søvejen i tide til at møde Hannibal. Hannibal gjorde området bag ham mere sikkert ved at besejre Taurini-stammen (det moderne Torino). De modsatte styrker kæmpede ved Karthago. Her tvang Hannibal romerne til at komme ud af den lombardiske slette. Denne sejr gjorde meget for at svække den romerske kontrol over gallerne. Gallerne besluttede sig for at slutte sig til karthaginerne. Snart var hele Norditalien uofficielt allieret. Galliske og liguriske tropper øgede snart hans hær tilbage til 40.000 mand. Hannibals hær var klar til at invadere Italien. Scipio trak sig tilbage over floden Trebia. Han slog lejr ved byen Placentia og ventede på flere tropper.
Senatet havde beordret Sempronius Longus til at bringe sin hær fra Sicilien for at møde Scipio og stå over for Hannibal. Hannibal var i position til at slå ham ned. Sempronius undgik Hannibal og sluttede sig til Scipio nær Trebbia-floden nær Placentia. Ved Trebia besejrede Hannibal det romerske infanteri ved et overraskelsesangreb fra et bagholdsangreb på flanken.
Slaget ved Trasimenesøen
Hannibal ankom til Etrurien i foråret 217 f.Kr. og besluttede sig for at lokke den romerske hovedhær under ledelse af Flaminius i kamp. Hannibal fandt Flaminius i lejr ved Arretium. Han marcherede rundt om sin modstanders venstre side og afskærede Flaminius fra Rom. Hannibal fik Flaminius til at jagte ham. Ved Trasimenussøens bred ødelagde Hannibal Flaminius' hær i vandet eller på de nærliggende skrænter. Han dræbte også Flaminius. Han havde gjort sig af med den eneste styrke, der kunne forhindre ham i at nå frem til Rom. Han indså, at han uden belejringsmaskiner ikke kunne gøre sig håb om at indtage hovedstaden, så han besluttede at fortsætte ind i det centrale og sydlige Italien. Han håbede, at denne magtdemonstration ville skabe et oprør mod den romerske regering. Efter Trasimenesøen sagde Hannibal: "Jeg er ikke kommet for at bekæmpe italienere, men på italienernes vegne mod Rom."
Fabius
Rom blev bragt i en enorm paniktilstand. De udnævnte en diktator ved navn Quintus Fabius Maximus. Han var en intelligent og omhyggelig general.
Fabius fulgte den "Fabianske strategi". Han nægtede åben kamp mod sin fjende og placerede flere romerske hære i nærheden af Hannibal for at begrænse hans bevægelser. Fabius sendte små styrker ud mod Hannibals fourageringspartier. Beboerne i små landsbyer i nord blev bedt om at holde udkig. De kunne samle deres husdyr og ejendele og gå til befæstede byer. Dette ville slide på angribernes udholdenhed.
Hannibal besluttede at marchere gennem Samnium til Campania. Han håbede, at ødelæggelserne ville trække Fabius ind i kampen, men Fabius nægtede at lade sig trække ind i kampen. Hans tropper blev irriterede over hans "feje ånd". Hans politik var ikke vellidt. Romerne var vant til at stå over for deres fjender i felten, og folket ønskede en hurtig afslutning på krigen.
Resten af efteråret fortsatte med hyppige skænderier. Efter seks måneder blev Fabius fjernet fra sin stilling i overensstemmelse med den romerske lov.
Slaget ved Cannae
I foråret 216 f.Kr. erobrede Hannibal det store forsyningsdepot i Cannae på den apuliske slette og placerede sig dermed effektivt mellem romerne og deres forsyningskilde. Det romerske senat genoptog valget af konsulater i 216. De valgte Caius Terentius Varro og Lucius Aemilius Paullus som konsuler. Romerne samlede den største hær til dato i deres historie for at besejre Hannibal. Det anslås, at hærens samlede styrke var på omkring 80.000 mand.
Den romerske hær marcherede sydpå til Apulien. Efter to dages march fandt de Hannibal ved Audifus-floden. Konsul Varro var en hensynsløs mand fuld af stolthed og var fast besluttet på at besejre Hannibal. Varros arrogance fik det bedste af ham og tillod Hannibal at trække ham i en fælde. Med en genial taktik omringede og ødelagde Hannibal det meste af denne styrke.
Det anslås, at 50.000-70.000 romere blev dræbt eller taget til fange ved Cannae. Blandt de døde var 80 senatorer. Det romerske senat bestod ikke af mere end 300 mænd - det var 25-30% af det regerende organ. Slaget ved Cannae et af de værste nederlag i det antikke Roms historie. Det er også et af de blodigste slag i hele menneskehedens historie med hensyn til antallet af tabte menneskeliv på en enkelt dag. Efter Cannae nægtede romerne at kæmpe mod Hannibal i slag. De forsøgte i stedet at besejre ham ved at nedslide ham. De stolede på deres fordele i form af forsyninger og mandskab.
På grund af denne sejr sluttede det meste af Syditalien sig til Hannibals sag. I samme år gjorde de græske byer på Sicilien oprør mod den romerske kontrol. Den makedonske konge, Filip V, støttede Hannibal. Dette startede den første makedonske krig mod Rom. Hannibal lavede sin nye base i Capua, den næststørste by i Italien.
Stilstand
Uden ressourcer fra sine allierede eller forstærkninger fra Karthago kunne Hannibal ikke gøre meget mere og begyndte at tabe terræn. Han fortsatte med at besejre romerne, når han kunne få dem i kamp, men var aldrig i stand til at score endnu en afgørende sejr.
Krigens afslutning i Italien
I 212 f.Kr. lukkede konspiratorer i Tarentum Hannibal ind i byen. De blæste derefter alarm med nogle romerske trompeter. Dette lod Hannibals tropper plukke romerne ned, mens de snublede ud i gaderne. Hannibal bad Tarentinerne om at markere hvert eneste hus, hvor Tarentinerne boede, så de ikke ville blive plyndret. Selv med plyndringerne holdt citadellet stand. Dette forhindrede Hannibal i at bruge havnen, og Rom vandt langsomt terræn over Hannibal. Samme år mistede han Campania.
I 211 f.Kr. faldt byen Capua. I sommeren samme år udslettede romerne den karthagiske hær på Sicilien. I mellemtiden havde Hannibal besejret Fulvius ved Herdonea i Apulien, men tabte Tarentum. Med tabet af Tarentum i 209 f.Kr. og romernes erobring af Samnium og Lucania var hans greb om Syditalien næsten tabt.
I 207 f.Kr. trak han sig tilbage til Bruttium. Disse begivenheder markerede afslutningen på Hannibals succes i Italien. I 203 f.Kr. blev Hannibal kaldt tilbage til Karthago for at lede forsvaret af sit hjemland mod en romersk invasion.