חניבעל הבין שכוחות רעננים הם הסיכוי היחיד שלו לנצח, ובאמצעות עיר הנמל האחרונה שלו קרוטון, יצר קשר עם אחיו עזרובעל שלחם ברומאים בהיספניה, וביקש ממנו לנסות להגיע לאיטליה באותו מסלול שבו הגיע הוא עצמו. עזרובעל ספג אותה תקופה תבוסות מבישות מידי הרומאים, והיה נאלץ ממילא במוקדם או במאוחר לנטוש את היספניה. הוא נאבק ברומאים בקרב באיקולה לקראת סוף שנת 208 לפנה"ס, ולאחריו נסוג בזהירות אל צפון היספניה. הרומאים בחרו שלא לרדוף אחריו בשל מזג האוויר הקשה. עזרובעל חצה את הרי הפירנאים, ופתח במסע מזורז במסלול של אחיו. עזרובעל נותר בגאליה למשך החורף כדי לגייס חיילים חדשים. תנועתו נצפתה בידי בני העיר מאסיליה, שהייתה בברית עם הרומאים, והחדשות גרמו לזעזוע ברומא. במהלך האביב, המשיך עזרובעל את מסעו וחצה במסע מזורז את האלפים, מסעו היה קל בהרבה מזה של אחיו, כיוון שהוא התנהל במזג אוויר נוח יותר עם מורי דרך מנוסים, והשבטים הגאלים שיתפו פעולה במידה רבה יותר. עזרובעל הגיע אל עמק הפו בקיץ של שנת 207 לפנה"ס עם 30,000 אנשים בערך. הוא רצה לעודד את שבטי הגאלים להצטרף אליו, ועל כן הטיל מצור על המושבה הרומאית פלנקטיה. עם זאת, בני העיר התגוננו היטב, ועזרובעל, שידע היטב שאסור לו לבזבז זמן, החל לנוע דרומה כדי לחבור אל חניבעל. אילו שני הצבאות הקרתגיים אכן היו מתחברים, מצבו של חניבעל שהתדרדר אט אט היה עשוי להתהפך פלאים, וייתכן שרומא הייתה נופלת בסופו של דבר.
כקונסולים של אותה שנה נבחרו גאיוס קלאודיוס נרו ומרקוס ליוויוס סלינטור. נרו קיבל פיקוד על הכוחות שחנו בוונוסיה והוצב מול חניבעל. ליוויוס קיבל פיקוד על הכוחות בצפון איטליה מול עזרובעל. חניבעל ניסה להימלט מפני הצבא של נרו כדי לחבור אל אחיו בזמן. נרו ניסה למנוע זאת ותקף את חניבעל בקרב גרומנטום, שהסתיים ללא הכרעה, אולם עיכב את חניבעל בברוטיום. בינתיים, עזרובעל הגיע אל נהר מטאורוס ולאחר מכן שלח שליח לאחיו כדי להודיע לו על בואו. אולם השליח נתפס בדרך לחניבעל בידי אנשיו של נרו. זה האחרון ידע היטב שאם עזרובעל יחמוק מליוויוס ויחבור אל חניבעל יקיץ הקץ על רומא, ולפיכך החליט להפר את הוראות הסנאט שהורה לו לא לעזוב את ברוטיום, ולחבור אל ליוויוס החונה במטאורוס. נרו הצעיד את אנשיו רגלית מרחק גדול מאוד, והגיע בחסות החשיכה אל המחנה של ליוויוס. כעת הכוח הרומאי כלל 47,000 איש, והיה גדול יותר באופן משמעותי מהכוח הקרתגי. העובדה שיש כעת שני קונסולים במחנה ולא אחד, התגלתה לעזרובעל רק לפנות בוקר, כאשר שמע מהמחנה הרומאי שתי תרועות חצוצרה במקום אחת.
בחסות החשיכה ביצע עזרובעל נסיגה מסודרת צפונה לאורך הנהר, כשהוא מקווה לחצותו, וכך להימלט מהסכנה הרומאית, ולנסות שוב ליצור קשר עם חניבעל ממקום מבטחים, אולם בשל ההצפה של הנהר עקב גשמי האביב והמסת השלגים, לא הצליח למצוא מקום בטוח למעבר. הרומאים דלקו אחריו, תוך שהם מאלצים אותו לנהל את הקרב שממנו ביקש להימנע בשל נחיתותו המספרית. בנוסף על כך, רבים מחייליו הגאלים השתכרו במשך הלילה ותפקדו גרוע. בלית ברירה ערך עזרובעל את כוחותיו.
הקרב החל בהתקפה של האגף השמאלי הרומאי על האגף הימני הקרתגי. הפרשים הקרתגים ניגפו בפני אלו הרומאים, אולם המרכז והאגף הימני החזיקו מעמד היטב והמערכה החלה לנטות מעט לטובת עזרובעל. עם זאת, האגף הימני הרומאי בפיקודו של נרו הצליח לבצע תנועת איגוף ולתקוף את האגף הימני הקרתגי מאחור. האגף הימני התמוטט במהרה מול המתקפה המשולבת, וכעת המרכז הקרתגי כותר מכל צדדיו בידי הרומאים. את התבוסה השלימה מתקפה מוחצת של חיל הפרשים הרומאי, שהביס בהצלחה את חיל הפרשים הקרתגי. עזרובעל נהרג, וראשו הושלך אל מחנהו של חניבעל.
קרבות אחרונים.
כקונסולים של שנת 206 לפנה"ס נבחרו לוקיוס וטורניוס פילון וקווינטוס קאיקולוס מטלוס. חניבעל נסוג אל ברוטיום, ולא גילה נטייה לצאת לקרב. שני הקונסולים מצדם גם הם לא השתוקקו לקרב והסתפקו בשמירה על חניבעל בתוך גבולות ברוטיום. מצב זה נמשך לאורך כל השנה.
כקונסולים של שנת 205 לפנה"ס נבחרו פובליוס קורנליוס סקיפיו ופובליוס ליקיניוס קראסוס דיבס. סקיפיו, על אף היותו צעיר יחסית, כבר הספיק לדכא ניסיון התקוממות לאחר קרב קאנאי, ולאחר מכן נשלח לנהל את הקרבות בהיספניה. במהלך קרבות אלו נחל סקיפיו הצלחה גדולה, ובשנה שקדמה לבחירתו כקונסול נכבש המעוז הקרתגי האחרון בחצי האי האיברי - גאדס. בנאומיו בסנאט, הציע סקיפיו שוב ושוב תוכנית שאפתנית, על פיה הוא יפלוש לאפריקה דרך סיציליה ויטיל איום על קרתגו עצמה. איום כזה, כך טען, הוא הדרך הבטוחה ביותר לסילוקו של חניבעל מחצי האי האפניני. עם זאת, פאביוס הקשיש התנגד לתוכנית זו, וסבר שאין להזניח את רומא עצמה. רבים נוספים מחברי הסנאט התנגדו לה, כיוון שקינאו בעוצמתם הרבה של בני משפחת סקיפיו. למרות זאת, סקיפיו קיבל אישור להפליג לסיציליה ולנסות להקים שם צבא מתאים לקראת הפלישה שתכנן.
עקב כיבוש היספניה בידי הרומאים, החליט מאגו ברקה, צעיר אחיו של חניבעל, להפליג אל חצי האי האפניני, לעזרת אחיו, עם הכוח הקרתגי שבפיקודו החונה באיים הבליאריים. מאגו נחת בהפתעה בליגוריה, וכבש ללא קרב כמעט את ג'נובה. אולם מסע המלחמה שלו מעולם לא צבר תאוצה כמו זה של שני אחיו. הוא ניסה להתאחד עם חניבעל, אך בקרב עמק הפו, כיתרו אותו ארבעה לגיונות רומאיים והוא נאלץ לעצור. אולם פרט לכך, הישגי הרומאים באותה שנה היו מצומצמים. סקיפיו הצליח בעזרת ספינותיו להדוף התקפה קרתגית על לוקרי, והקונסול קראסוס פלש לברוטיום. אולם אז פרצה מגפה קשה במחנהו של חניבעל, והמגפה פגעה קשות גם ברומאים. קראסוס נאלץ לעצור למנוחה ואפילו לא היה יכול לבוא לרומא ולהיות נוכח בקונסולאט של השנה הבאה.
כקונסולים של שנת 204 לפנה"ס נבחרו מרקוס קורנליוס קאתאגוס ופובליוס סמפרוניוס טודיטאנוס. על פי המנהג, חולקו ביניהם הלגיונות השונים. סמפרוניוס קיבל פיקוד על הלגיונות שהוצבו בברוטיום נגד חניבעל, וקורנליוס קיבל פיקוד על הלגיונות שהוצבו באטרוריה מול מאגו. האסטרטגיה של חניבעל נשענה באותה תקופה על מגננה על עיר הנמל קרוטון, שהייתה למעשה עיר הנמל האחרונה שנותרה לו. לאחר ששיירה של 100 ספינות שהיו אמורות להביא לו אספקה וכסף הושמדה, נאלץ חניבעל להתחיל לגבות מיסים גבוהים יותר מהאוכלוסייה המקומית. כמו כן, הוא גרש אזרחים שנחשדו בשיתוף פעולה עם רומא, והטיל עונשים על ערים ושבטים שלא היו נאמנים מספיק, מה שיצר נגדו התמרמרות רבה.
בקיץ של אותה שנה ניצח חניבעל את סמפרוניוס בקרב קטן ליד קרוטון. סמפרוניוס נמלט למחנהו, וחניבעל לא העז לתקוף אותו. סמפרוניוס, נחוש להשיב את כבודו העצמי הרמוס, התאחד עם צבאו של הפרוקונסול קראסוס, ובכוחות מתוגברים צעד אל שערי קרוטון. חניבעל יצא נגדו, אולם לא היה יכול לצבא המאוחד ונסוג אל קרוטון, כשהוא מותיר מאחוריו 4,000 הרוגים. סמפרוניוס לא ניצל את ניצחונו כדי להטיל מצור על קרוטון, והסתפק בכיבוש כמה עיירות בסביבה.
פינוי.
כקונסולים של שנת 203 לפנה"ס נבחרו גנאיוס סרוויליוס קאיפיו וגאיוס סרוויליוס גמינוס. באותה שנה באה לקיצה המערכה בחצי האי האפניני באופן מפתיע. כאמור לעיל, המצביא הרומאי פובליוס קורנליוס סקיפיו תכנן לפלוש לאפריקה בשנת 205, אולם בשל חוסר תמיכה של הסנאט בוצעה הפלישה לבסוף רק בשנת 204 לפנה"ס. מטרת הפלישה הייתה להסיט את תשומת הלב של חניבעל מאיטליה אל מולדתו. סקיפיו ניצל במיומנות רבה את הסכסוכים בין ראשי השבטים הנומידים, והצליח לרכוש את לבו של המצביא הנומידי הצעיר מסיניסה. השניים הטילו מצור על העיר הקרתגית החשובה אוטיקה, אולם בקרתגו סירבו להזעיק את חניבעל, סירוב שהתברר כהרה אסון, לאחר שסקיפיו הביס את הצבא הקרתגי בקרב המישורים הגדולים. בלית ברירה הוחלט להזעיק את חניבעל מאיטליה. עוד לפני כן הוזעק חזרה צבאו של מאגו. הצבא עצמו הצליח להגיע אל אפריקה, אולם לא ברור גורלו של מאגו עצמו.
בחודש יולי של שנת 203 לפנה"ס עזב חניבעל במפתיע את איטליה. הוא חמק ממנה בעזרת צי שיצא מקרוטון בלי שהרומאים ירגישו בכך, והפליג עם צבאו חזרה אל אפריקה. הרומאים כבשו במהירות את כל מה שנותר מהאימפריה של חניבעל. לא ברור מה היה גודל הצבא שחניבעל חזר עמו. חסידיו של סקיפיו טוענים שמספרם הגיע ל-24,000, בעוד חסידי חניבעל מצמצמים את המספר לכדי 10,000. סוגיה נוספת היא מספר החיילים הוותיקים שהגיעו חזרה לאפריקה. חסידיו של חניבעל טוענים כי צבאו הורכב בעיקר מתושבים מקומיים מדרום-איטליה שגויסו או התנדבו לצבאו של חניבעל, ושרוב הצבא המקורי איתו פלש לאיטליה (ובמיוחד הפרשים הנומידיים) חדל מלהתקיים במהלך המערכה הממושכת שהוא ניהל בחצי האי האפניני. תומכיו של סקיפיו טוענים כי מספר החיילים הוותיקים שנותרו בצבאו של חניבעל היה גדול יותר.
כאשר חניבעל הגיע כבר היה חורף, ולפיכך דחו שני הצדדים את פעולות האיבה. עם בוא האביב של שנת 202 לפנה"ס הפרו הקרתגים את ההסכם, ובזזו ספינות אספקה רומאיות. בתחילת הקיץ ארגן סקיפיו פעולת תגמול גדולה, וצעד במהירות לכיוון הדרומטום, שם חנה חניבעל, כשהוא בוזז בדרכו את האזורים הכפריים של קרתגו. חניבעל התקדם גם הוא במהירות כדי לפגוש את סקיפיו. שני הצדדים נפגשו בסוף בעיר "זאמה רגיה", עיר בקרתגו על גבול נומידיה, שם התרחש קרב זאמה, שסיים את המלחמה. למרות זאת, חלק מהכוחות הקרתגיים שחנו בתחומי עמק הפו, שאז לא נכלל בתחום איטליה ולפיכך הסכם השלום לא חל עליהם, המשיכו במאבק עד שנת 197 לפנה"ס.
מילואימניק
טאוטה דורס