חניבעל בילה כמה ימים במנוחה, ולאחר מכן, מכיוון שהיה זקוק לכסף, ניסה לארגן את פדיונם של השבויים הרומאיים שבידיו. הוא שלח עשרה מנכבדי השבויים אל העיר, והללו התחייבו לחזור למחנה הקרתגי בלי קשר לתוצאות המשא ומתן. כמו כן שלח את אחד מקציניו, קרתאלו, בניסיון להגיע להסכם כניעה הוגן, אולם הסנאט סירב אפילו לדון על אפשרות כזו, וקרתאלו הצטווה לעזוב את רומא מיד. צעד אמיץ זה נחשב במחקר המודרני, למעשה שהציל את רומא בשעת משבר. הסנאט אף סירב לפדות את השבויים, בטענה שהללו בגדו בחובתם כחיילים. הרומאים החלו לנקוט בצעדים מעשיים כדי לשקם את העיר. אשמת הכישלון הוטלה על שתי בתולות וסטליות שסרחו. נשים נשואות הצטוו לא לצאת מבתיהן כדי לקונן על אחיהן בעליהן ובניהן שנהרגו, והקינות הוגבלו לזמנים ולמקומות מסוימים. גיל הגיוס הונמך ל-17, ופושעים ועבדים קיבלו רשות לפדות עצמם ולהתגייס לצבא. כלי הנשק הוצאו ממקדשי האלים והחיילים החדשים חומשו בהם. מרקוס יוניוס פארה מונה כדיקטטור באופן זמני.
המטרה העיקרית של הצבא הקרתגי כעת, הייתה למצוא בסיסים לחורף, וכן לפתור את בעיית האספקה. חניבעל עזב את פוליה ופלש למחוז קמפניה. משקרב החורף, הגיע לשערי העיר החשובה נולה. חניבעל תכנן לכבוש אותה בהסתערות פתע, אולם מצא את העיר מוכנה היטב למצור. הוא ידע שמחסור באספקה והחורף המתקרב לא יתנו לו להטיל מצור יעיל על העיר, על כן נסוג וחיפש מקום לחייליו לחורף. העיר העשירה קפואה פתחה בפני הקרתגים את שעריה, וחניבעל נפגש עם נכבדי העיר וכרת עמם ברית הוגנת, על פיה הורשתה קפואה לשמור על חוקיה ומנהגיה, ובניה היו פטורים משירות בצבאו של חניבעל. חניבעל קבע את מחנהו בהר טיפאטה סמוך לקפואה, והורה לחייליו לשלם בכסף מלא על משתאות מזון או כלי נשק, אף על פי שצבאו החזיק למעשה בעיר. הוא קיבל שם נציגים משבטים קמפנים שונים, וכן מהברוטים, הלוקנים, הסמניטים והאפולים, שכולם הציעו לו נאמנות. הברית שחניבעל הציע הייתה מחייבת הרבה פחות מהברית שהציעו הרומאים, כך שהיה קל יותר לקבל אותה.
חניבעל המשיך לנסות להעביר לצידו את הערים המקומיות. הוא תקף את נאפולי, וחיל המצב הרומאי שלה הובס מול חומות העיר. עם זאת, הסנאט המקומי עמד באומץ בהתקפה, וחניבעל נאלץ לוותר. חניבעל השיג פיצוי בכך שלכד בהסתערות את הערים נוקריה (Nuceria) ואקרי (Acerrae). במקורות מתואר טבח נוקריה בתושבי הערים שנמלטו בהמוניהם, אולם חוקרים מודרניים דוחים את הסיפור וסוברים שמדובר בתעמולה רומית. במקביל, תקף חניבעל את העיר החשובה קאסילינום, ששכנה על גבול פוליה-קמפניה. הרומאים היו נחושים למנוע את נפילת העיר, והדיקטטור פארה יצא בראש צבא אליה. חניבעל הביס את הצבא הרומאי בשערי העיר, מה שאפשר לו להטיל עליה מצור יעיל. העיר הורעבה קשות, וכל מאמצי הרומאים להעביר אליה סיוע נכשלו. בסוף נובמבר או בתחילת דצמבר נכנעה העיר והסכימה לקבל אליה חיל מצב קרתגי. במקביל, הותקפה פאטאליה (Petelia) בידי כוח קרתגי שכלל גם המוני מתנדבים מקומיים טריים. מנהיגי העיר פנו לסנאט, אולם הלה הודה שאין ביכולתו לעשות דבר. כעבור עשרה חודשים, לאחר שלא נותר עוד מזון בעיר, נכנעו התושבים.
הרומאים מצדם, החליטו להמשיך מעתה ואילך עם שיטת האסטרטגיה הפביאנית. חניבעל העביר את חורף 216–217 בקפואה, וחייליו נהנו משפע המותרות שבעיר, מה שהוליד את הביטוי "חורף קפואני". פיליפוס החמישי, מלך מוקדון, שלח משלחת רשמית לדון עמו על ברית אנטי-רומאית. ברית כזו הייתה בדיוק מה שחניבעל היה צריך: פיליפוס היה יכול לספק לחניבעל כוחות רעננים שקרתגו התקשתה לספק לו. תנאי ההסכם שנחתם קבעו כי המלך יכין צי גדול בן כמאתיים אניות, יפלוש לאיטליה, יבוז את החופים ויילחם בים וביבשה בכל הכוח שברשותו; בתמורה יוכל להרחיב כרצונו את גבולות ממלכתו בבלקן. עם זאת, הרומאים הפעילו על פיליפוס לחץ כבד והתוכנית נדחתה לשנה הבאה. כמו כן, גם בסרדיניה החלו המקומיים לגלות עצבנות כלפי השלטון הרומאי, ובהיספניה החלו שני אחיו של חניבעל להשיב מלחמה נגד האחים סקיפיו. הרומאים מצאו עצמם נאבקים בארבע זירות בו זמנית (איטליה, סרדיניה, היספניה, הבלקן), וחניבעל היה יכול לקוות שבקרוב מאוד יאלצו לבקש כניעה.
תנופה קרתגית.
כקונסולים של שנת 215 לפנה"ס נבחרו מרקוס קלאודיוס מרקלוס וטיבריוס סמפרוניוס גרקכוס. מרקלוס חנה בנולה, וגרקכוס חנה בעיירות בקמפניה. חניבעל חנה בהר טיפאטה, לא רחוק מקפואה. שני הקונסולים החליטו לבצע פשיטות על כפרי השבטים הנאמנים לחניבעל, במטרה להתיש אותם ולגרום להם לחזור לברית עם הרומאים. גרקכוס ביצע פשיטה על כפריהם של שבטים הנאמנים לחניבעל. חניבעל האמין שגרקכוס עדיין בוזז ויקל עליו לתפוס אותו, אולם גרקכוס נמלט לקומאי והתבצר בה. חניבעל נסוג לטיפאטה וחזר עם מגדלי מצור, אולם לאחר קרב קצר נאלץ לסגת חזרה לטיפאטה.
בהמשך הגיעה תלונה נוספת אל חניבעל מפי בעלי בריתו, שמרקלוס משחית את אדמותיהם. חניבעל תקף את נולה, מבצרו של מרקלוס, אולם מרקלוס התגונן היטב, הוציא להורג את כל מי שלא היה נאמן לרומא, וביצע גיחות נועזות על החיילים הקרתגיים. לכך הצטרף גשם כבד שהקשה עליהם. חניבעל איבד כמה אלפי חיילים בעוד אבדות הרומאים הסתכמו במאות ספורות בלבד. בנוסף על כך, בקרב זה קרה לחניבעל מה שלא אירע לו עד אז אלא פעמים מעטות בלבד במהלך המערכה באיטליה. כמה מאות פרשים נומידיים ואיברים ערקו אל הרומאים תמורת הבטחה לאדמה.
חניבעל נסוג חזרה לאפוליה, והקים כוח מיוחד שכלל בעיקר מגויסים טריים משבט הברוטיים. כמפקדם מינה חניבעל את חנו בן בומילקר, והורה לו לנסות לתפוס את ערי יוון הגדולה. ערים אלו היו למעשה מושבות יווניות בשליטת רומא, שהמרירות בהן נגד הרומאים הייתה רבה. עם זאת, התברר שהיוונים חששו יותר מדי מהרומאים, והצלחותיו של חנו היו מועטות. הוא ניסה את מזלו ברגיום, אולם נכשל. לאחר מכן נע לכיוון לוקרי, שתושביה החלו להימלט בהמוניהם. כוח פרשים קרתגי בפיקודו של מצביא בשם חמלקרת, פתח במרדף אחרי הנמלטים, והצליח להניס אותם חזרה אל בין החומות. חנו הצליח להגיע למשא ומתן עם הלוקרים, על פיו העיר לא תיבזז ולא תיפגע, ובתמורה יקבלו הקרתגים שימוש חופשי בנמל החשוב של לוקרי. אולם הברוטים, שמלכתחילה הצטרפו אל חניבעל במטרה לשדוד ולבזוז, התאכזבו מכך. בתגובה הם תקפו את נמל קרוטון בלי לבקש אישור מהמפקדים הקרתגיים, וזאת במטרה שהשלל יהיה שלהם בלבד. קרוטון הייתה עיר עשירה ששכן בה מקדש מפורסם של יונו. חניבעל ידע שביזת עיר כזו תבאיש את ריחו בעיני שאר הערים, ועל כן הורה לחנו לפנות את נכבדי התושבים ובראשם אדם בשם אריסטומאכוס אל לוקרי, ולהתיר לברוטים לשדוד באופן מפוקח את האחוזות הריקות.
ייצוב החזית.
כקונסולים של שנת 214 לפנה"ס נבחרו מאקסימוס (פעם רביעית בחייו) ומרקלוס (פעם שלישית בחייו). בין השניים היו חילוקי דעות, שכן מרקלוס החזיק בדעה שיש להילחם בחניבעל בכל אמצעי, בעוד מאקסימוס רצה להמשיך ולהשתמש באסטרטגיה הישנה שלו של אדמה חרוכה. אולם הכל היו תמימי דעים שרומא נמצאת כעת במלחמה גדולה בכמה חזיתות, ועל כן החלה רומא בהכנות גדולות במסגרתן הוגדל מספר הלגיונות ונבנו ספינות מלחמה חדשות ביוזמת אנשים פרטיים. חניבעל מצדו נע מקמפניה לפוליה, וחנה ליד אגם אווארנוס (Avernus), רשמית לצורך הקרבת קורבנות, אולם בפועל כדי לרגל אחר הביצורים של העיר פוטואלי. הוא העמיד פנים שמטרתו היא העיר קומאי, אולם פנה בהפתעה אל פוטואלי, שחיל המצב הרומאי שלה כלל 6,000 איש והייתה בטוחה באופן טבעי בשל תנאי השטח הקשים ובנוסף לכל גם בוצרה היטב. לאחר שלושה ימי מצור, נסוג חניבעל ועבר לבזוז את סביבותיה של נאפולי. העיר ניצלה רק הודות להבטחה מצד מספר סנאטורים מנולה, שהבטיחו להסגיר לידיו את העיר. חניבעל נע לכיוון נולה, אולם הקונסול מרקלוס קיבל ידיעה מוקדמת על הקשר והגיע בזמן כדי לעצור אותו.
במקביל, פאביוס קיבל ידיעה שחנו נע עם צבאו אל בנבנטום (בנוונטו), כ-50 ק"מ צפונית-מזרחית לנאפולי. תנועה זו הותירה את העיר קאסילינום ללא הגנה ופאביוס פתח במצור עליה. במקביל, הפרוקונסול גרקכוס נע עם כוחותיו אל אותו אזור בדיוק, מכיוון לוקריה (Luceria). לגרקכוס נודע שחנו חונה באזור הנהר קלורה אירפינו (Calore Irpino), כשלושה קילומטרים בלבד ממחנהו של גרקכוס. גרקכוס הצליח לקבל אישור מיוחד מהסנאט לצאת לקרב, שנראה לכאורה לא שקול בהתחשב בכך שחייליו של גרקכוס היוו מיליציה שכללה בעיקר עריקים, וכן פושעים ועבדים שהובטחה להם חנינה וחירות. אולם לאחר יום של התכתשות, שכונה קרב בנבנטום, הביסו הרומאים את הקרתגים וחנו נמלט משדה הקרב עם פחות מאלפיים פרשים. גרקכוס חגג את ניצחונו בבנבנטום ולאחר מכן חזר לרומא. במקביל נחלו הקרתגים כישלון נוסף כאשר מרקלוס הדף התקפה של חניבעל על נולה.
המצור על קאסילינום לא התנהל לשביעות רצונם של הרומאים. פאביוס ספג אבדות כבדות ונאלץ לבקש ממרקלוס לבוא לעזרתו. למזלם של הרומאים, חניבעל איבד עניין בנולה והחל לנוע אל טראנטום (טאראנטו) שבפוליה. מרקלוס העז להפקיד את נולה בידי 2,000 חיילים ונע במהירות אל קאסלינום עם שאר הכוח. התגבורת לא שינתה משמעותית את המצב, והעיר נפלה לבסוף בעזרת תחבולה. לאחר מכן, בתוך כמה ימים לכדו הרומאים סדרת ערים, בקרבות שפרטיהם אינם ידועים: פולפולה, מאלאה, קומפסה, טלסיה, קומפולטריה ואורביטניום. על פי המקורות, במהלך קרבות אלו איבדו הקרתגים 25,000 איש, מספר מוגזם ככל הנראה. כמו כן נתפסו 370 עריקים מהצבא הרומי. הם נשלחו לרומא ושם הוצאו להורג באכזריות.
מלחמת התשה.