公元前212年,汉尼拔攻下塔朗多(Tarentum),但无法成功占领控制其港口。此时双方的优势已渐渐转向罗马。 罗马在两次围城后于公元前211年夺回卡普阿,占领锡拉库萨,并在西西里岛上摧毁了一支迦太基军队,平定了当地的起义。同时并与希腊本土的 艾托里亚联邦(Aetolian League) 结盟对付马其顿的腓力五世,腓力在遭到四面围攻之后不久便向联军臣服。 公元前210年汉尼拔再次展现其战略天分,在普利亚地区 Herdonea 之处重挫罗马军,并于公元前208年在 Locri Epizephyri 围城战中摧毁另一支罗马部队。但罗马在这段时间内已渐渐夺回各地失去领土,并在公元前209年内攻下塔朗多,至此汉尼拔几乎丧失了其对意大利南部的控制。
战后和平时期(公元前200–196年) 四十六岁的汉尼拔在此时开始了他的政治生涯,并证明他在内政上的能力不亚于他的军事才华。战后他先低调行事了一阵子,但迦太基政局的腐败使他不久之后便出头予以整治,他被选为行政官后恢复了这个职位的威信,并进行了一系列成效显彰的改革,使得迦太基可望在不大幅增加税收的情况下分期付清对罗马的战争赔款。 流亡与辞世(公元前195–183年)
公元前 190 年,汉尼拔受命指挥安条克的舰队,但在 西底(Side)被罗马的盟军击败。安条克在连串战役中败给罗马之后,有意向罗马人求和并交出汉尼拔,因此汉尼拔逃至克里特(Crete) 岛,但不久便再次返回小亚细亚,投靠当时正与罗马盟国 帕加马(Pergamum) 交战的 比提尼亚(Bithynia)国王 普鲁西亚斯一世(Prusias I)。汉尼拔在这场战争中为 普鲁西亚斯立下战功,再次让罗马人决心使其就擒。在罗马的要求下,普鲁西亚斯同意将其交出,但决心不落入罗马人手下的汉尼拔至此服毒自尽。