Hannibals vader, Hamilcar, was de bevelhebber van de Carthaagse strijdkrachten aan het einde van de Eerste Punische Oorlog. Nadat Carthago de oorlog had verloren, trok Hamilcar naar Hispania om de stammen van het huidige Spanje te veroveren. Ten tijde van deze invasie verkeerde Carthago in een slechte toestand. Haar marine kon haar leger niet naar Iberia (Hispania) brengen. Hamilcar moest naar de Zuilen van Hercules marcheren en de Straat van Gibraltar oversteken. Volgens een verhaal in Livy liet Hamilcar Hannibal beloven dat hij nooit een vriend van Rome zou zijn. Hannibal zei tegen zijn vader:
Ik zweer dat zodra de leeftijd het toelaat... Ik zal vuur en staal gebruiken om het lot van Rome te stoppen.
In ruil daarvoor stemde Hamilcar ermee in Hannibal mee te nemen naar Hispania. Hamilcar bracht twee jaar door met de verovering van Iberia ten zuiden van de rivier Ebro. Hij stierf in 229/228 in de strijd, waarschijnlijk door verdrinking in de rivier de Jucar. Zijn schoonzoon Hasdrubal nam het bevel over, maar werd in 221 v.Chr. vermoord.
Met de dood van Hasdrubal werd Hannibal de leider van het leger. Rome vreesde de groeiende kracht van Hannibal. Ze sloten een verbond met de stad Saguntum en beweerden de stad te beschermen. Saguntum lag ten zuiden van de rivier de Ebro. Hannibal viel de stad daarom aan. Deze werd na acht maanden veroverd. Met deze aanval van een Romeinse bondgenoot wilde Rome gerechtigheid van Carthago. De Carthaagse regering zag echter niets verkeerds in de acties van Hannibal. De door Hannibal gewenste oorlog werd aan het eind van het jaar verklaard.
Reis naar Italië
Hannibals leger bestond uit maar liefst 75.000 voetsoldaten en 9.000 ruiters. Hannibal verliet "Nieuw Carthago" in de late lente van 218 voor Christus. Hij vocht zich een weg naar het noorden tot aan de Pyreneeën. Hij versloeg de stammen door slimme bergtactieken en koppige gevechten. Nadat hij 290 mijl door Hispania had gemarcheerd en de rivier de Ebro had bereikt, koos Hannibal de meest betrouwbare en loyale delen van zijn leger van Libische en Iberische huurlingen om met hem door te gaan. Hij liet 11.000 troepen achter om de wacht te houden over het pas veroverde gebied. Bij de Pyreneeën liet hij nog eens 11.000 Iberische troepen los. Hannibal trok Gallië binnen met 50.000 voetsoldaten en 9.000 ruiters.
Hannibal moest de Pyreneeën, de Alpen en vele belangrijke rivieren in de regio oversteken. Vanaf de lente van 218 v.C. vocht hij zich een weg naar de Pyreneeën. Hij sloot vredesakkoorden met de Gallische stamhoofden en bereikte de rivier de Rhône. Bij aankomst bij de Rhône in september telde Hannibals leger 38.000 infanteristen, 8.000 ruiters en zevenendertig oorlogsolifanten.
Hannibal ontsnapte aan een Romeinse troepenmacht die hem in Gallië wilde bestrijden. Vervolgens trok hij de vallei van een van de stromen van de Rhône op. Tegen de herfst bereikte hij de voet van de Alpen. Zijn tocht over de bergen is een van de beroemdste prestaties van een militaire macht. Na deze tocht daalde Hannibal vanuit de uitlopers af naar Noord-Italië, tot verrassing van de Romeinen. Hij was aangekomen met slechts de helft van de troepen waarmee hij was begonnen en slechts enkele olifanten. Hannibal had maar liefst 20.000 man verloren bij de oversteek over de bergen.
Slag bij Trebbia
Publius Cornelius Scipio voerde het bevel over de Romeinse troepen die Hannibal moesten tegenhouden. Hij verwachtte niet dat Hannibal de Alpen zou oversteken. Hij verwachtte Hannibal te bestrijden in Spanje. Met een klein leger nog in Gallië probeerde Scipio Hannibal tegen te houden. Hij verplaatste zijn leger op tijd over zee naar Italië om Hannibal te ontmoeten. Hannibal maakte het gebied achter hem veiliger door de stam van de Taurini (het huidige Turijn) te verslaan. De tegengestelde krachten vochten bij Carthago. Hier dwong Hannibal de Romeinen zich uit de vlakte van Lombardije terug te trekken. Deze overwinning verzwakte de Romeinse controle over de Galliërs. De Galliërs besloten zich aan te sluiten bij de Carthagers. Al snel was heel Noord-Italië officieus geallieerd. Gallische en Ligurische troepen brachten zijn leger al snel weer op 40.000 man. Hannibals leger was klaar om Italië binnen te vallen. Scipio trok zich terug over de rivier de Trebia. Hij sloeg zijn kamp op bij de stad Placentia en wachtte op meer troepen.
De Senaat had Sempronius Longus opgedragen zijn leger vanuit Sicilië naar Scipio te brengen om Hannibal tegemoet te treden. Hannibal was in positie om hem af te snijden. Sempronius ontweek Hannibal en voegde zich bij Scipio bij de Trebbia rivier nabij Placentia. Bij Trebia versloeg Hannibal de Romeinse infanterie door een verrassingsaanval vanuit een hinderlaag in de flank.
Slag om het Trasimeer
Bij zijn aankomst in Etrurië in de lente van 217 v.C. besloot Hannibal het belangrijkste Romeinse leger onder leiding van Flaminius in de strijd te lokken. Hannibal vond Flaminius gelegerd bij Arretium. Hij marcheerde rond de linkerkant van zijn tegenstander en sneed Flaminius af van Rome. Hannibal liet Flaminius hem achtervolgen. Aan de oever van het Trasimenusmeer vernietigde Hannibal het leger van Flaminius in het water of op de nabijgelegen hellingen. Hij doodde ook Flaminius. Hij had zich ontdaan van de enige macht die hem kon tegenhouden om Rome te bereiken. Hij besefte dat hij zonder belegeringswerktuigen niet kon hopen de hoofdstad in te nemen, dus besloot hij door te trekken naar Midden- en Zuid-Italië. Hij hoopte dat dit machtsvertoon een opstand tegen de Romeinse regering zou veroorzaken. Na het meer van Trasimene zei Hannibal: "Ik ben niet gekomen om tegen Italianen te vechten, maar namens de Italianen tegen Rome."
Fabius
Rome raakte in grote paniek. Ze benoemden een dictator genaamd Quintus Fabius Maximus. Hij was een intelligente en voorzichtige generaal.
Fabius paste de "Fabiaanse strategie" toe. Hij weigerde een open gevecht met zijn vijand en plaatste verschillende Romeinse legers in de buurt van Hannibal om zijn bewegingen te beperken. Fabius stuurde kleine troepen uit tegen Hannibals foerageerpartijen. Bewoners van kleine noordelijke dorpen moesten uitkijken. Zij konden hun vee en bezittingen verzamelen en naar versterkte steden gaan. Dit zou het uithoudingsvermogen van de indringers verminderen.
Hannibal besloot door Samnium naar Campania te marcheren. Hij hoopte dat de vernietiging Fabius in de strijd zou lokken, maar Fabius weigerde zich in de strijd te laten lokken. Zijn troepen raakten geïrriteerd door zijn "laffe geest". Zijn beleid viel niet in de smaak. De Romeinen waren gewend hun vijanden in het veld tegemoet te treden en het volk wilde een snel einde van de oorlog.
De rest van de herfst ging door met veelvuldige schermutselingen. Na zes maanden werd Fabius volgens de Romeinse wet uit zijn functie ontheven.
Slag bij Cannae
In de lente van 216 voor Christus veroverde Hannibal het grote bevoorradingsdepot van Cannae in de Apulische vlakte, waardoor hij zich effectief tussen de Romeinen en hun bevoorradingsbron plaatste. De Romeinse Senaat hervatte zijn consulaire verkiezingen in 216. Zij kozen Caius Terentius Varro en Lucius Aemilius Paullus tot consuls. De Romeinen verzamelden het grootste leger tot dan toe in hun geschiedenis om Hannibal te verslaan. Men schat de totale sterkte van het leger op ongeveer 80.000 man.
Het Romeinse leger marcheerde zuidwaarts naar Apulië. Na een mars van twee dagen vonden ze Hannibal bij de rivier Audifus. Consul Varro was een roekeloze man vol trots en was vastbesloten Hannibal te verslaan. Varro's arrogantie overviel hem en liet Hannibal toe hem in de val te lokken. Met een briljante tactiek omsingelde en vernietigde Hannibal het grootste deel van deze troepenmacht.
Men schat dat 50.000-70.000 Romeinen werden gedood of gevangen genomen bij Cannae. Onder de doden waren tachtig senatoren. De Romeinse Senaat bestond uit niet meer dan 300 man - dit was 25%-30% van het bestuursorgaan. De Slag bij Cannae was een van de zwaarste nederlagen in de geschiedenis van het oude Rome. Het is ook een van de bloedigste veldslagen in de hele menselijke geschiedenis wat betreft het aantal levens dat op één dag verloren ging. Na Cannae weigerden de Romeinen Hannibal in veldslagen te bestrijden. In plaats daarvan probeerden ze hem te verslaan door hem uit te putten. Ze vertrouwden op hun voordelen van bevoorrading en mankracht.
Door deze overwinning sloot het grootste deel van Zuid-Italië zich aan bij Hannibals zaak. In datzelfde jaar kwamen de Griekse steden op Sicilië in opstand tegen de Romeinse overheersing. De Macedonische koning Filips V steunde Hannibal. Hiermee begon de Eerste Macedonische Oorlog tegen Rome. Hannibal maakte zijn nieuwe basis in Capua, de tweede grootste stad van Italië.
Patstelling
Zonder de middelen van zijn bondgenoten of versterkingen uit Carthago kon Hannibal niet veel meer doen en begon hij terrein te verliezen. Hij bleef de Romeinen verslaan wanneer hij ze in de strijd kon brengen, maar kon nooit meer een beslissende overwinning behalen.
Einde van de oorlog in Italië
In 212 voor Christus lieten samenzweerders in Tarentum Hannibal de stad binnen. Ze bliezen vervolgens alarm met enkele Romeinse trompetten. Hierdoor konden Hannibals troepen de Romeinen uitschakelen toen ze de straten in strompelden. Hannibal vertelde de Tarentijnen om elk huis waar Tarentijnen woonden te markeren zodat ze niet geplunderd zouden worden. Zelfs met de plunderingen hield de citadel stand. Hierdoor kon Hannibal de haven niet meer gebruiken en won Rome langzaam terrein op Hannibal. In hetzelfde jaar verloor hij Campania.
In 211 voor Christus viel de stad Capua. In de zomer van dat jaar vernietigden de Romeinen het Carthaagse leger op Sicilië. Ondertussen had Hannibal Fulvius verslagen bij Herdonea in Apulië, maar verloor Tarentum. Met het verlies van Tarentum in 209 voor Christus en de inname van Samnium en Lucania door de Romeinen was zijn greep op Zuid-Italië bijna verloren.
In 207 voor Christus trok hij zich terug in Bruttium. Deze gebeurtenissen markeerden het einde van Hannibals succes in Italië. In 203 voor Christus werd Hannibal teruggeroepen naar Carthago om de verdediging van zijn vaderland tegen een Romeinse invasie te leiden.