Ганнібал був одним із синів карфагенського полководця Гамількара Барки, мав кількох сестер та двох братів — Гасдрубала та Магона. Ще дитиною він застав Повстання найманців та завоювання Іберії. Прізвисько Барка («блискавка»), мабуть, було спадковим, тому що пізніше Ганнібал і його брати також носили ім'я Барка. Після поразки Карфагена у Першій Пунічній війні Гамількара було відіслано в Іберію, щоб «покращити там справи Карфагена». Країна була розореною після війни, тому за відсутністю кораблів Гамількару довелося долати шлях з Африки до Іспанії суходолом. Він узяв з собою в похід і свого сина — Ганнібала, якому, перед тим як вирушити, наказав принести клятву, яка набула значення крилатого вислову «Ганнібалова клятва». Гамількар спитав сина чи хоче той вирушити разом з ним, почувши схвальну відповідь, Гамількар сказав, що перед жертовним вівтарем він має поклястися бути довічним ворогом Риму.
За Полібієм, ця історія була розказана самим Ганнібалом селевкідському царю Антіоху ІІІ. Дитинство Ганнібала пройшло в місті Гадес, з якого його батько почав завойовницькі походи в Іспанії[. Гамількар піклувався про освіту сину, тому найняв для нього вчителів з Карфагену та Еллади, від яких він отримав загальні знання та навчився класичним мовам. З часом Ганнібал почав брати участь і у військових авантюрах батька. Зокрема, Гамількар відвоював у місцевих племен золоті та срібні копальні й відновив карбування монети для виплати контрибуції Римові. У 229 р. до н. е. він взяв в облогу місто Геліка, біля якого, потрапивши у засідку оретанів, загинув, рятуючи Ганнібала та Гасдрубала. По смерті Гамількара командувачем армією став його зять Гасдрубал, який служив його помічником. Гасдрубалові вдалося помститися за смерть Гамількара та розширити карфагенські володіння в Іспанії. Він підписав договір з Римом про розподіл сфер впливу на Іберійському півострові, в якому йшлося, що Карфаген не претендуватиме на землі північніше річки Ебро, якщо Рим не буде здійснювати експансію на південні території.
За Лівієм, Ганнібал після смерті батька від'їжджав з братами до Карфагену, але у 224 р. до н. е. повернувся до Іспанії, де отримав посаду командира кінноти в армії Гасдрубала. У 221 р. до н. е. Гасдрубал був убитий власним слугою і війська обрали своїм командиром Ганнібала, згодом він був призначений карфагенським урядом головнокомандувачем військами в Іспанії. Лівій писав, що воїни бачили в образі Ганнібала молодого Гамількара з все тим же запалом в очах. Прийнявши командування, Ганнібал прийнявся за розширення володінь в Іспанії та укріпленні карфагенських позицій. Впродовж двох років йому вдалося повністю підкорити іберійські племена південніше річки Ебро. У своєму першому поході він взяв у облогу та захопив столицю олькадів, фортецю Альталію, що призвело до визнання ними влади Карфагену над собою. Також були підкорені Саламантика та Арбокала, а Ганнібал в свою чергу одружився з іберійською принцесою Імількі.
Від Іберії до Італії
План походу не був спонтанним рішенням і продумувався ще Гасдрубалом Красивим за його командування в Іспанії. Римляни побоювалися союзу карфагенян з племенами кельтів, тому до 220 р. до н. е. підкорили Цизальпійську Галлію. Смерть Гасдрубала фактично збіглася з цією подією і тепер доля задуму знаходилася в руках Ганнібала. Римляни, почуваючи себе в цілковитій безпеці від вторгнення галло-карфагенських військ, з початком війни відправили двох консулів в Іспанію та Сицилію для подальшого вторгнення в Африку. Не маючи іншого виходу, Ганнібал вирішив сам перейти до активних дій і атакувати римлян в Італії, таким чином захистивши Африку.

Битва при Требії
Швидка поява Ганнібала в Італії стала несподіванкою для римського сенату. Спустившись у долину По, карфагеняни штурмом узяли столицю тавринів (сучасний Турин), після чого деякі галльські племена почали переходити на бік карфагенян, проте більшість залишалася осторонь під страхом присутності римлян. Для боротьби з Ганнібалом римляни тимчасово відмовилися від вторгнення в Африку і відкликали із Сицилії консула Тиберія Семпронія Лонга. Карфагенський полководець, своєю чергою, також бажав швидкої переможної битви для того, щоб схилити місцеві племена на свій бік. Біля ріки Тіцин відбулася перша сутичка на території Італії між військами Ганнібала та Публія Корнелія Сципіона (батька Публія Корнелія Сципіона Африканського).

 Битва при Тразименському озері
Ганнібал розквартирував свої війська на зимівлю серед галлів, підтримкою яких він заручився. Навесні 217 р. до н. е. полководець вирішив продовжити просування на південь. Він вирушив до Апеннін, перейшовши їх через перевал Поретта. Новообрані консули Гней Сервілій Гемін та Гай Фламіній очікували прямого наступу на Рим, тому розташували свої армії на східному та західному напрямку відповідно, римляни не передбачали використання Ганнібалом інших шляхів.
Ганнібал був одним з перших великих полководців античності, політ стратегічної і тактичної думки якого сягнув висот, достойних сучасності. Він ставив понад усе мобільність, добре організовану розвідку, налагодження комунікацій і постачання продовольства. Аналіз обстановки проводився залежно від ситуації — як географічної, так і фізичної та моральної. Під останнім мається на увазі використання коливань серед воїнів у таборі противника для розрахунку оптимального часу битви.
Основу армії Ганнібала складали піхотинці, але вирішальна роль у битвах була за кавалерією. Ганнібалові притаманна відсутність недооцінки суперника та, відповідно, прискіплива підготовка до битви, але в той же час — концентрація на слабких сторонах опонента і здійснення по них несподіваних ударів.
До сьогодні на заняттях з тактики військовики розглядають битву при Каннах як винятковий зразок ефективного використання власних сил для оточення та повного знищення сил супротивника.

 Битва при Каннах
Навесні 216 р. до н. е. Ганнібал, вичерпавши всі наявні запаси продовольства, рушив у Канни. Взявши Канни, він поставив себе між Римом і його джерелами забезпечення провізією. Цього ж року консульську владу одержали Гай Теренцій Варрон та Луцій Емілій Павел, Рим, сподіваючись розв'язати проблему із загарбником, вдався до раніше небаченої концентрації військових ресурсів: було зібрано 22 легіони, 87-92 тис. чоловік.
Римляни та союзники вирушили на південь Апулії, щоб прийняти бій з Ганнібалом. Вони зустрілися з його армією на лівому березі річки Ауфід і стали табором на відстані 10 кілометрів від неї. Консульські армії цього разу були подвоєні і складали в сумі 8 легіонів, і стільки ж союзних військ. У день битви за жеребом була Варронова черга командувати армією, людини, за свідченнями Лівія, нетерплячої і безрозсудної. Ганнібал використав жагу Варрона до перемоги на свою користь — він вибудував свої війська у формі півкола або серпа, розмістивши в центрі галльські частини, а по флангам досвідчених африканських та іспанських найманців.

Повернення в Африку
Після падіння Капуї Ганнібалові вдалося знову перемогти при Гердонії, далі війна в Апулії йшла з перемінним успіхом, однак римлянам вдалося придушити бунтівні настрої на Сицилії, взявши штурмом Сиракузи. Проти Філіпа V було сформовано Етолійську лігу і положення Македонії ускладнилося через загрозу як від римлян, так і від еллінів.

209 р. до н. е. Ганнібалом було втрачено Тарент, у відповідь він розгромив римську армія при Локрах у 208 р. до н. е. — у битві загинув консул Марцелл, а консул Кріспін отримав тяжке поранення. Ця перемога відродила в Ганнібала надію на успішне продовження боротьби — з Іспанії було відкликано його брата Гасдрубала з підкріпленням. Цим надіям не вдалося втілитися в життя — під час переходу Гасдрубал потрапив у засідку консула Гая Клавдія Нерона під Метавром і загинув. Його голову було відрубано і кинуто всередину табору Ганнібала — це послугувало для нього знаком, що Італія неминуче буде втрачена. До невдачі Магона в Лігурії, проблем з Філіпом V додалося ще й вторгнення Сципіона до Африки після переможної кампанії в Іспанії.

 Битва при Замі

Корнеліс Корт. «Битва при Замі» (1567)
Підійшовши до Зами, Ганнібал відправив розвідників у табір Сципіона, але їх місію було розкрито. Сципіон не наказав стратити або ув'язнити полонених, а навпаки — провести їх по всьому табору і відправити назад. Карфагенський полководець був здивований такою впевненістю у власних силах його супротивника і запропонував Сципіонові зустріч в околицях Зами. Він запропонував візаві свої умови припинення війни, привівши у приклад те, як сам не так давно стояв в околицях Риму. Проконсул відмовився і наступного дня мала відбутися битва.

На відміну від інших битв Другої Пунічної війни, при Замі саме римляни мали перевагу в кавалерії. Нумідійський цар Масинісса зрадив Ганнібала через обіцянки римлян надати йому території та через власні суперечки з карфагенським союзником царем Сіфаксом. Незважаючи на те, що сам Ганнібал після стількох років війни в Італії знаходився у стані повного морального і фізичного виснаження, карфагеняни мали значну перевагу в чисельності і розраховували на 80 бойових слонів.

Нумідійці Масинісси зім'яли недосвідчену кавалерію карфагенян, а бойові слони, які повинні були виступити у ролі смертоносної зброї, стали нею проти самих пунійців — маніпули розступилися перед атакою слонів, тварин закидали пілумами, а вцілілі, налякані звуками римських труб і свистом, розвернулися й атакували власні ряди. Ганнібал намагався врятувати положення, покладаючись на своїх ветеранів, які стримували легіонерів Сципіона, але нумідійська кавалерія несподівано завдала удару в тил — його армія опинилася в оточенні. Ганнібал утік з поля бою з невеликим загоном вершників у містечко Гадрумет.

Після поразки Ганнібал не бачив уже жодних шляхів для продовження боротьби і закликав сенат прийняти капітуляцію на будь-яких умовах. Карфаген, відповідно до мирного договору, втрачав усі свої заморські та африканські володіння, окрім самого міста Карфаген та приміських районів, скорочувалася армія та розпускався весь військовий флот, окрім 10 кораблів. Також пунійці зобов'язані були виплачувати римлянам військову контрибуцію протягом 50 наступних років.
Поразка вдарила також і по авторитету Ганнібала, Карфаген у його повоєнному становищі вже не міг вести суперництво за володіння Середземномор'ям.

Тіт Лівій описував його як здібного полководця, готового проходити через будь-які труднощі, але через те, що Ганнібал мав постати для народу у вигляді антигероя, частіше концентрувався на його недоліках, таких як розпущеність, безчестя, жорстокість. Саме таке кліше можна спостерігати у творах майже всіх римських авторів.
Полібій дещо пом'якшив цей контраст, відмітивши, що про його жадібність він чув лише від опозиційних Ганнібалу олігархічних кіл, а жорстокість у воєнний час не є чимось дивним, оскільки не лише карфагенянин, а й римляни нерідко вдавалися до цього пороку.
Однак у 183 р. до н. е. римляни довідалися про присутність Ганнібала при дворі Прусія й направили у Віфінію вимогу його видачі. Можливо, Прусій сам видав полководця, бажаючи знайти ласки римлян. Його солдати оточили притулок Ганнібала і той, не бажаючи здаватися римлянам, прийняв отруту з персня, який постійно носив при собі. Павсаній пов'язує смерть Ганнібала з падінням з коня, Ювенал притримується версії про отруту, за його записами, Ганнібал перед смертю залишив лист такого змісту: «Потрібно нарешті позбавити римлян від докучливого старого чоловіка»