Hannibalův otec Hamilkar byl na konci první punské války (264-241 př. n. l.) velitelem kartaginských vojsk. Poté, co Kartágo válku prohrálo, Hamilkar přešel do Hispánie, aby si podrobil kmeny na území dnešního Španělska. Kartágo se v té době nacházelo ve špatném stavu. Jeho loďstvo nemohlo přepravit svou armádu do Iberie (Hispánie). Hamilkar musel táhnout k Herkulovým sloupům a přejít Gibraltarskou úžinu. Podle vyprávění v Liviovi přiměl Hamilkar Hannibala ke slibu, že se nikdy nestane přítelem Říma. Hannibal řekl svému otci
Přísahám, že jakmile mi to věk dovolí, použiji oheň a ocel, abych zastavil osud Říma.
Hamilkar na oplátku souhlasil, že vezme Hannibala s sebou do Hispánie. Dva roky strávil dobýváním Pyrenejského poloostrova jižně od řeky Ebro. Zemřel v roce 229/228 v bitvě, pravděpodobně se utopil v řece Jucar. Velení převzal jeho zeť Hasdrubal, ale v roce 221 př. n. l. byl zavražděn.
V roce 221 př. n. l. se tak Hannibal stal vůdcem armády. Řím se obával Hannibalovy rostoucí síly. Uzavřel spojenectví s městem Saguntum a prohlásil, že město chrání. Saguntum se nacházelo jižně od řeky Ebro. Hannibal proto na město zaútočil. Po osmi měsících bylo dobyto. Řím chtěl po Kartágu spravedlnost. Kartáginská vláda neviděla na Hannibalově jednání nic špatného. Válka, kterou Hannibal chtěl, byla vyhlášena na konci roku.
Cesta po souši do Itálie
Hannibalova armáda čítala až 75 000 pěšáků a 9000 jezdců. Hannibal opustil "Nové Kartágo" koncem jara roku 218 př. n. l. Probojoval se na sever k Pyrenejím. Kmeny porazil díky chytré taktice v horách a urputnému boji. Po pochodu dlouhém 290 mil a dosažení řeky Ebro si Hannibal vybral nejspolehlivější a nejvěrnější části své armády z libyjských a iberských žoldnéřů, aby s ním pokračovali v cestě. Zanechal zde 11 000 vojáků, kteří měli hlídat nově dobytou oblast. U Pyrenejí propustil dalších 11 000 iberských vojáků. Hannibal vstoupil do Galie s 50 000 pěšáky a 9 000 jezdci.
Hannibal musel překonat Pyreneje, Alpy a mnoho důležitých řek. od jara roku 218 př. n. l. se probojoval k Pyrenejím. Uzavřel mírové dohody s galskými vůdci a dosáhl řeky Rhôny. Hannibalova armáda, která dorazila k Rhoně v září, čítala 38 000 pěšáků, 8 000 jezdců a 37 válečných slonů.
Hannibal unikl římskému vojsku, které proti němu bylo vysláno do Galie. Poté se vydal do údolí jednoho z toků řeky Rhôny. Na podzim se dostal na úpatí Alp. Jeho cesta přes hory patří k nejslavnějším úspěchům všech vojenských sil. Po této cestě Hannibal sestoupil z úpatí hor do severní Itálie. Dorazil jen s polovinou sil, s nimiž vyrazil, a jen s několika slony. Hannibal při přechodu hor ztratil až 20 000 mužů.
Bitva u Trebbie
Publius Cornelius Scipio velel římským jednotkám vyslaným zastavit Hannibala. Neočekával, že Hannibal překročí Alpy. Očekával, že s Hannibalem bude bojovat v Hispánii. S malou armádou, která se stále nacházela v Galii, se Scipio pokusil Hannibala zastavit. Přesunul svou armádu po moři do Itálie včas, aby se mohl s Hannibalem setkat. Hannibal si zajistil bezpečí v oblasti za sebou tím, že porazil kmen Taurinů (dnešní Turín). Soupeřící vojska se utkala u Kartága. Zde Hannibal donutil Římany, aby opustili Lombardskou nížinu. Toto vítězství značně oslabilo římskou kontrolu nad Galy. Galové se rozhodli připojit ke Kartágincům. Brzy byla celá severní Itálie neoficiálně spojencem. Galské a ligurské oddíly brzy zvýšily jeho armádu zpět na 40 000 mužů. Hannibalova armáda byla připravena vtrhnout do Itálie. Scipio se stáhl za řeku Trebii. Utábořil se u města Placentia a čekal na další vojáky.
Senát nařídil Semproniovi Longovi, aby přivedl své vojsko ze Sicílie vstříc Scipiovi a postavil se Hannibalovi. Hannibal byl v pozici, kdy mu mohl čelit. Sempronius se Hannibalovi vyhnul a spojil se se Scipionem u řeky Trebbia poblíž Placentia. U Trebie Hannibal porazil římskou pěchotu překvapivým útokem ze zálohy na křídle.
Bitva u Trasimenského jezera
Když Hannibal na jaře roku 217 př. n. l. dorazil do Etrurie, rozhodl se vylákat hlavní římskou armádu vedenou Flaminiem do bitvy. Hannibal našel Flaminia tábořit v Arretiu. Pochodoval kolem levého boku svého protivníka a odřízl Flaminia od Říma. Hannibal přinutil Flaminia, aby ho pronásledoval. Na břehu Trasimenského jezera Hannibal zničil Flaminiovu armádu ve vodě nebo na blízkých svazích. Flaminia také zabil. Zbavil se tak jediné síly, která mu mohla zabránit v cestě do Říma. Uvědomil si, že bez obléhacích strojů nemůže doufat v dobytí hlavního města, a proto se rozhodl pokračovat do střední a jižní Itálie. Doufal, že tato demonstrace síly vyvolá povstání proti římské vládě. Za Trasimenským jezerem Hannibal prohlásil: "Nepřišel jsem bojovat proti Italikům, ale ve jménu Italiků proti Římu".
Fabius
Řím se dostal do obrovské paniky. Jmenovali diktátora jménem Quintus Fabius Maximus. Byl to inteligentní a opatrný generál.
Fabius přijal "fabiánskou strategii". Odmítl otevřený boj s nepřítelem a postavil několik římských armád do blízkosti Hannibala, aby omezil jeho pohyb. Fabius vyslal proti Hannibalovým sběračům malé jednotky. Obyvatelé malých severních vesnic dostali příkaz, aby postavili hlídky. Mohli shromáždit svůj dobytek a majetek a odejít do opevněných měst. Tím by se výdrž útočníků vyčerpala.
Hannibal se rozhodl táhnout přes Samnium do Kampánie. Doufal, že zkáza vtáhne Fabia do boje, ale Fabius se odmítl nechat vtáhnout do bitvy. Jeho vojáci byli podrážděni jeho "zbabělým duchem". Jeho politika se jim nelíbila. Římané byli zvyklí čelit nepřátelům v poli a lid si přál rychlý konec války.
Zbytek podzimu pokračoval častými potyčkami. Po šesti měsících byl Fabius v souladu s římským právem odvolán z funkce.
Bitva u Cannae
Na jaře roku 216 př. n. l. se Hannibal zmocnil velkého zásobovacího skladu v Cannae na Apulijské planině, čímž se fakticky postavil mezi Římany a jejich zdroj zásobování. Římský senát v roce 216 obnovil volby konzulů. Za konzuly zvolili Caia Terentia Varra a Lucia Aemilia Paulla. Římané shromáždili do té doby největší armádu ve své historii, aby Hannibala porazili. Odhaduje se, že celková síla armády činila asi 80 000 mužů.
Římská armáda táhla na jih do Apulie. Po dvou dnech pochodu našli Hannibala u řeky Audifus. Konzul Varro byl bezohledný muž plný pýchy a byl odhodlán Hannibala porazit. Varrova arogance ho přemohla a dovolila Hannibalovi, aby ho vlákal do pasti. Díky brilantní taktice Hannibal obklíčil a zničil většinu tohoto vojska.
Odhaduje se, že u Cannae bylo zabito nebo zajato 50 000-70 000 Římanů. Mezi mrtvými bylo i osmdesát senátorů. Římský senát netvořilo více než 300 mužů - to bylo 25-30 % vládnoucího sboru. Bitva u Cannae jednou z nejhorších porážek v dějinách starověkého Říma. Je to také jedna z nejkrvavějších bitev v celých lidských dějinách, pokud jde o počet obětí na životech během jediného dne. Po Cannae Římané odmítli bojovat s Hannibalem v bitvách. Místo toho se ho snažili porazit tím, že ho vyčerpali. Spoléhali se na své zásobovací a lidské výhody.
Díky tomuto vítězství se většina jižní Itálie přidala na Hannibalovu stranu. V témže roce se proti římské nadvládě vzbouřila řecká města na Sicílii. Makedonský král Filip V. Hannibala podpořil. Tím začala první makedonská válka proti Římu. Hannibal si vybudoval novou základnu v Capui, druhém největším městě Itálie.
Patová situace
Bez prostředků svých spojenců a posil z Kartága nemohl Hannibal udělat o mnoho víc a začal ztrácet půdu pod nohama. Pokračoval v porážení Římanů, kdykoli je mohl přivést do bitvy, ale nikdy se mu nepodařilo dosáhnout dalšího rozhodujícího vítězství.
Konec války v Itálii
V roce 212 př. n. l. spiklenci v Tarentu vpustili Hannibala do města. Poté zatroubili na poplach několika římskými trubkami. To umožnilo Hannibalovým vojákům vybírat Římany, kteří se potáceli v ulicích. Hannibal řekl Tarentincům, aby označili každý dům, kde Tarentinci žijí, aby je nevyrabovali. I přes drancování se citadela udržela. To Hannibalovi zabránilo využívat přístav a Řím pomalu získával nad Hannibalem převahu. V témže roce ztratil Kampánii.
V roce 211 př. n. l. padlo město Capua. V létě téhož roku Římané zničili kartaginskou armádu na Sicílii. Hannibal mezitím porazil Fulvia u Herdonea v Apulii, ale ztratil Tarentum. Po ztrátě Tarentum v roce 209 př. n. l. a obsazení Samnia a Lukánie Římany byla jeho pozice v jižní Itálii téměř ztracena.
V roce 207 př. n. l. odešel do Brutia. Tyto události znamenaly konec Hannibalových úspěchů v Itálii. V roce 203 př. n. l. byl Hannibal povolán do Kartága, aby vedl obranu své vlasti proti římské invazi.