В это время Аннибал находился в весьма трудном положении: войска его были истощены беспрерывными походами, терпели во всем недостаток, а из Карфагена, по интригам враждебной Аннибалу партии, подкреплений не присылалось. Из затруднений этих Аннибал был выручен опрометчивостью Т. Варрона, который (26 г.) атаковал карфагенян при Каннах (в Апулии) в местности, удобной для действия их отличной нумидийской конницы. Тут римляне потерпели новое, ужасное поражение; большая часть их армии легла на месте, а Павел Эмилий был убит.
Несмотря на одержанную победу, Аннибал не мог теперь, как и прежде, покуситься на овладение самим Римом, так как не имел никаких средств для правильной осады. Ему пришлось удовольствоваться тем, что после сражения при Каннах большая часть римских союзников в Италии приняла его сторону и что Капуя, второй город республики, открыла ему свои ворота. В этом городе он дал временный отдых своим истомленным войскам; но положение Аннибала мало улучшилось, так как правители Карфагена, занятые исключительно своекорыстными торговыми интересами, упустили удобный случай окончательно раздавить своих исконных соперников — римлян и не оказывали своему гениальному полководцу почти никакой поддержки. За все время Аннибалу выслано было в подкрепление только 12 тыс. пехоты и 1/2 т. конницы. Рим между тем оправился, собрал новые войска, и консул Марцелл одержал при Ноле первую победу над карфагенянами. После ряда военных действий, шедших с переменным успехом, Капуя была взята римлянами, и Аннибал должен был принять чисто оборонительное положение.
Не получая помощи из отечества, Аннибал вызвал из Испании брата своего, Аздрубала, который (207 г.) вследствие сего двинулся со своими войсками в Италию, но соединиться с Аннибалом не мог, так как римляне своевременно приняли меры, чтобы воспрепятствовать этому. Консул Клавдий Нерон одержал победу над Аннибалом при Грументуме, а затем, соединившись с другим консулом, Ливием Сампатором, разбил Аздрубала. Узнав об участи, постигшей его брата (отрубленная голова которого была брошена в карфагенский лагерь), Аннибал отступил в Бруциум, где еще в течение 3 лет выдерживал неравную борьбу со своими заклятыми врагами.
По прошествии этого времени карфагенский сенат вызвал Аннибала на защиту родного города, которому угрожал консул Корнелий Сципион, перенесший войну в Африку. В 203 г. Аннибал покинул Италию, приплыл к африканским берегам, высадился при Лептисе и расположил свои войска при Адрумсте. Попытка вступить в переговоры с римлянами не имела успеха. Наконец, на расстоянии пяти переходов от Карфагена, при Заме, последовало решительное сражение (202 г.). Карфагеняне были наголову разбиты, и этим закончилась 2-я Пуническая война.
В последующий затем период мира полководец Аннибал выказал себя и государственным человеком; занимая должности претора, или главы республики, Аннибал привел в порядок финансы, обеспечил срочные уплаты тяжелой контрибуции, наложенной победителем, и вообще в мирное, как и в военное, время оказался на высоте своего положения.
Мысль о возобновлении борьбы с Римом, однако, не покидала его, и, чтобы заручиться большими шансами на успех, он вступил в тайные сношения с сирийским царем Антиохом III. Враги Аннибала донесли об этом в Рим, и римляне потребовали его выдачи. Тогда Аннибал бежал к Антиоху (195 г.) и успел уговорить его поднять оружие против Рима, надеясь склонить к тому же своих соотечественников, но карфагенский сенат решительно отказался от ведения войны. Флоты сирийский и финикийский были разбиты римлянами, и в то же время Корнелий Сципион нанес поражение Антиоху под Магнезией.
Новое требование римлян о выдаче Аннибала заставило его бежать (189 г.) к вифинскому царю Прузию. Тут стал он во главе союза между Прузием и соседними с ним владетелями против римского союзника, пергамского царя Эвмена.
Действия Аннибала против неприятеля были и теперь победоносны, но Прузий изменил ему и вошел в сношения с римским сенатом относительно выдачи своего гостя. Узнав об этом, 65-летний Аннибал, чтобы избавиться от постыдного плена после столь славной жизни, принял яд, который постоянно носил в перстне.