Благодаря благородству Сципиона повергнутый Ганнибал смог остаться на свободе, хотя римский сенат еще 17 лет требовал выдачи его как зачинщика войны. Ганнибал оставался в Карфагене, в котором у него было много врагов, но и почитателей. Враги пытались привлечь его к суду за то, что он не сумел взять Рим, а огромную добычу, захваченную в Италии, использовал как зарплату солдатам. И все же в 196 г. до н. э. его избрали на должность суффета – верховного судьи Карфагена, где он хотел реализовать ряд прогрессивных реформ в судопроизводстве. Благодаря поддержке Народного собрания Ганнибал проводит закон, по которому Совет ста четырех должен обновляться ежегодно. Этот закон подрывал сам олигархический строй республики. Тетерь в обновленный совет Ганнибал мог провести сколько угодно своих сторонников. Главным органом управления страны становилось Народное собрание. Реформа была нацелена против олигархов с целью лишить сенат реальной власти. Эта реформа была важной внутриполитической победой Ганнибала.
Тем временем Карфагену не хватало денег для выплаты контрибуции Риму, и правительство планировало ввести новый налог. Проверяя финансовые отчетности, Ганнибал обнаружил большое количество махинаций, которые позволяли олигархам наживаться за счет казны. Перед Народным собранием Ганнибал заявил, что заставит их вернуть присвоенные суммы. Олигархи, по-видимому, были вынуждены вернуть какую-то часть денег. Этими действиями Ганнибал нажил много врагов. Представители враждебной Баркидам фракции в карфагенском сенате обвинили Ганнибала в тайных сношениях с сирийским царем Антиохом III и написали донос в римский сенат. В послании говорилось, что Ганнибал готовится к новой войне и вступил в сговор с Антиохом III, царем Сирии (Селевкидской державы). Римский сенат принял решение отправить послов, которое должны будут дать ответ перед Советом старейшин. Ганнибал предвидел вероятность того, что ему придется бежать, и успел в своем приморском имении приготовить корабль. На нем он доплыл до острова Керкина, а оттуда направился в Тир, который в это время входил в державу Селевкидов. Там Ганнибал собирался встретиться с сирийским царем Антиохом III для совместных действий против Рима. Но уже в январе 189 г. до н. э. сирийские войска под командованием Антиоха потерпели поражение при Магнесии. Царь был вынужден заключить мир на условиях римлян, одним из которых была выдача Ганнибала.
Узнав об этом, Ганнибал уплыл в город Гортина на Крите. После этого он отправился в Армению, провозгласившую независимость от империи Селевкидов. Примерно в 186 г. до н. э. Ганнибал перебрался к царю Вифинии Прусию, который в это время начал войну с пергамским царем Эвменом, союзником римлян. В то время Вифиния была дикой горной страной, населенной потомками фракийцев и фригийцев. Густые еловые и сосновые леса покрывали горные склоны. Ее властелин вознамерился основать новую столицу своего царства, которая должна была располагаться южнее старой. Город получил название Пруса (сегодня – Брусса), а первый камень в его основание заложил сам Ганнибал. Находясь в Вифинии, он помог ее жителям выиграть морское сражение с пергамскими кораблями. Это был последний успех полководца.