Брат Ганнибала, Гасдрубал, потерпел поражение. Ганнибал получил лишь голову брата.
В 203 г. до н. э. Ганнибал был вынужден вернуться в Африку. В битве при Заме (202 г. до н. э.) Ганнибал потерпел поражение от Публия Корнелия Сципиона (Африканского), на сторону которого перешла нумидийская конница во главе с царем Масиниссой.
По мирному договору (201 г. до н. э.) карфагеняне теряли все свои заморские владения, в том числе и Испанию. Им запрещалось вести войны даже с соседними племенами без разрешения римского сената. Карфаген выплачивал огромную контрибуцию в 10 тысяч талантов и выдавал римлянам весь свой военный флот и боевых слонов. Это был очень унизительный договор.
Ганнибал пытался проводить политические реформы в Карфагене, являясь претором, или главой, республики. Он привел в порядок финансы, обеспечил срочные выплаты тяжелой контрибуции, в целом оказался на высоте положения.
Но «ганнибалова клятва» сделала свое дело. Ганнибал вступил в тайные переговоры с сирийским царем Антиохом III. Римляне потребовали его выдачи, и пришлось бежать. Карфагенский сенат войны не хотел. Сирийский и финикийский флоты были разбиты римлянами, а Корнелий Сципион нанес поражение Антиоху III и потребовал выдачи Ганнибала. Ганнибал скрывался в Армении, на острове Крит, у вифинского царя Прузия. Последний решил не связываться с Римом и выдал Ганнибала. В 183 г. до н. э. борец с римской экспансией, не желая попасть в руки врагов, принял яд, который постоянно носил в перстне. Он был похоронен в Либиссе, на европейском берегу Босфора.