זירת חצי האי האפניני במלחמה הפונית השנייה
מהלך המלחמה > קרבות ראשונים

כאשר צבאו המוחלש והתשוש הגיע לבסוף למרגלות הרי האלפים, עמדו בפני חניבעל שתי משימות עיקריות: הראשונה הייתה לדאוג למזון ומנוחה עבור חייליו, והשנייה הייתה לגייס לצידו במהירות בעלי ברית, כיוון שבשלב זה הגיע צבאו בקושי לממדי צבא קונסולרי ממוצע. את שתי הבעיות ניתן היה לפתור באמצעות השבטים הגאליים, ששכנו באזור שמצפון לנהר פו. השבטים הגאלים החזקים ביותר ששכנו באזור באותה תקופה היו הבויים, האינסוברים והטאורינים. כאשר הגיע חניבעל לאזור, הסתכסכו האינסוברים, שהיו בעלי בריתו, עם הטאורינים. חניבעל התערב לטובת האינסוברים, הטיל מצור על בירתם של הטאורינים (טורינו), ולאחר שלושה ימים של מצור כבש אותה וטבח בתושביה. הייתה זו תצוגה מחושבת של אכזריות, שנועדה להטיל מורא על השבטים האחרים באזור ואכן חלק מהשבטים הצטרפו אליו אולם מרביתם חששו מהרומאים והעדיפו להישאר נייטרליים. מספר שבטים אף שרתו כחיילות עזר בצבא הרומאי.
סקיפיו קיבל בינתיים ידיעות על כך שצבאו של חניבעל הגיע לצפון איטליה. הוא הופתע מכך שחניבעל הצליח לחצות את הרי האלפים ואף להכניע את הטאורינים, אולם גם חניבעל היה מבולבל, שכן לא ציפה שמצביא רומאי ינטוש את הלגיונות שלו בגאליה ויחזור לאיטליה, ולא ידע מה גודלו של הצבא שעמד לרשות סקיפיו. סקיפיו העריך שהצבא הקרתגי חלש ומותש מאוד בעקבות תלאות המסע דרך האלפים, כפי שניתן להבין ממשפט מתוך נאום שההיסטוריון ליוויוס שם בפיו: "יִרְאתי היחידה היא שכאשר תלחמו [נגד הצבא הקרתגי] יתגלה כי האלפים הם אלו שכבשו את חניבעל", ולכן לא חשש להתעמת איתו. בפני חניבעל עמדה אפשרות להתחמק מקרב, בחירה שנראתה נכונה לאור מצבם הירוד של חייליו, אולם החליט להילחם משום שידע שניצחון מרשים יעודד את השבטים הגאליים להצטרף אליו, וכן משום שבלאו הכי היה חייב לחבור אל כוחות האינסוברים והבויים שהבטיחו לו סיוע, מהלך שבהכרח היה מפגיש אותו עם צבאו של סקיפיו. חניבעל רצה להעלות את המורל של חייליו, ועל כן לקח כמה גאלים שנפלו בשבי, עינה אותם קשות, ולאחר מכן, כשהם פצועים וחבולים, הציג אותם בפני חייליו והציב בפניהם כלי נשק גאלים, וכן סוסים ובגדים יקרים, ושאל אותם אלו שניים מהם מוכנים להילחם זה בזה, בתנאי שהמנצח שיהרוג את השני יזכה בחירותו ובכל המתנות. כולם הסכימו פה אחד, חניבעל הטיל גורל והזוכים נאבקו זה בזה עד שאחד מהם הרג את השני וזכה בחירותו ובמתנות. לאחר המחזה קם חניבעל והסביר לחיילים את אשר רצה להמשיל להם, מצבם דומה למצבם של השבויים, לא נותרה בפניהם כל ברירה, אם ילחמו יהיה להם כל עושרה של רומא, אולם לסגת אי אפשר. למחרת צעד חניבעל כדי להיפגש עם הבויים, בעוד סקיפיו צעד כדי למצוא אותו. סקיפיו חצה את נהר הפו ואת נהר טיקינוס (בשמו המודרני טיצ'ינו), ובאזור פאביה נפגשו כוחות החלוץ של הצבאות היריבים. לחניבעל היה יתרון קל בפרשים, ובקרב טיקינוס הובסו הרומאים, סקיפיו עצמו נפצע וניצל רק הודות לבנו (לימים סקיפיו אפריקנוס). לאחר הקרב נסוגו הרומאים אל מעבר לנהר פו. חניבעל רצה לדלוק אחריהם, אך הרומאים הרסו את הגשרים ולקח זמן עד שנמצא מקום שבו יכלו המהנדסים הקרתגים לבנות גשר חדש.
קרב טיקינוס היה התנגשות קטנה ובלתי חשובה, ויש שאינם מחשיבים אותו כקרב של ממש. אולם למרות זאת, הקרב זעזע את הרומאים, שנוכחו לדעת שצבאו של חניבעל אינו חלש כפי שחשבו. סקיפיו ואנשיו נסוגו לעבר נהר הטרביה (יובל של נהר פו) והתבצרו במושבה הרומאית פלנקטיה (פיאצ'נצה). חניבעל כבש את העיר קלאסטידיום, שהיוותה בסיס אספקה רומאי חשוב, ונע לכיוון מחנהו של סקיפיו על נהר הטרביה. הסנאט הזעיק את הקונסול השני, טיבריוס סמפרוניוס לונגוס, מסיציליה, וצבאו של האחרון הגיע לצפון איטליה בנובמבר. היה זה סוף שנת 218 לפנה"ס, ושנת הכהונה של סקיפיו וסמפרוניוס כקונסולים עמדה להיגמר. סמפרוניוס היה להוט לזכות בניצחון על חניבעל שיאפשר לו לזכות בכהונה שנה נוספת. סקיפיו הפצוע, לעומת זאת, רצה לתת לחייליו לנוח במהלך החורף ולתקוף באביב, אולם באותו זמן זכו פרשיו של סמפרוניוס בניצחון זעום על קבוצת פרשים של חניבעל שבזזה שטחים גאליים. הניצחון הלהיב את סמפרוניוס, שרצה לצאת למערכה מהר ככל האפשר. מכיוון שסקיפיו היה פצוע, הייתה הסמכות המלאה בידי סמפרוניוס, שתכנן לצאת לקרב כבר למחרת ההתנגשות. חניבעל ניצל עד תום את להיטות אויבו, וגרר אותו למלכודת מתוחכמת על נהר הטרביה: בדצמבר נפגשו הצבאות בקרב טרביה, שנערך על פי התנאים של חניבעל. הקרב הסתיים בניצחון קרתגי מוחץ, והרומאים איבדו במהלכו 26–32 אלף חיילים.
לאחר הניצחון נהרו כמעט כל שבטי הגאלים של עמק הפו להצטרף לצבאו של חניבעל, פרט לשבט הקנומאנים, וחיזקו מאוד את כוחו. החבירה עם השבטים הגאליים איפשרה לחניבעל להניח לצבאו לנוח במשך החורף. הרומאים הבינו שהגנה על עמק הפו אינה אפשרית יותר, והחליטו למנוע מחניבעל לחדור למרכז איטליה ולאיים על רומא עצמה. כצפוי, סמפרוניוס וסקיפיו לא נבחרו שוב לקונסולים, ובמקומם נבחרו כקונסולים של שנת 217 לפנה"ס גאיוס סרוויליוס גמינוס וגאיוס פלאמיניוס נפוס. סרוויליוס קיבל את הפיקוד על שארית צבאו של סקיפיו באזור ארימיניום (רימיני), ואילו פלאמיניוס קיבל תחת פיקודו את שארית צבאו של סמפרוניוס באזור ארטיום (ארצו). הצבא הרומאי תוגבר בארבעה לגיונות חדשים, כדי לפצות על האבדות שספג בקרב טרביה. משני מקומות אלו ניתן היה לפעול בקלות נגד חניבעל, כאשר בכל דרך בה ינוע מעמק הפו אל מרכז איטליה, הוא ילכד בין שני הצבאות. מיד לאחר שהתפנו מעברי האפנינים משלג, פלש חניבעל מבולוניה דרך מעבר קולינה אל אטרוריה. פלאמיניוס הופתע, ופנה דרומה כדי להגן על רומא עצמה. חניבעל עקב אחריו וניסה לגרור אותו להילחם בקרב על ידי ביזת האזור. יועציו של פלאמיניוס דחקו בו להמתין לכוח של סרוויליוס שאמור לחבור אליו, אולם פלאמיניוס רצה לזכות בכל התהילה לבדו, ועם צבאו בן ה-40,000 איש תכנן להציב מארב לחניבעל בארטיום. חניבעל ניחש את כוונות אויבו, עקף אותו והמשיך קדימה. חניבעל רצה להתחמק מפלאמיניוס, ועל כן הצעיד את חייליו במהירות רצחנית. בשל הצעידה המאומצת חלו רבים מחייליו של חניבעל ואף הוא עצמו לקה בדלקת קשה בעינו, כאשר קיצרו את הדרך באזור ביצות בפירנצה, אולם הוא סירב לעצור כדי לטפל בחולים. כאשר נודע לפלאמיניוס שחניבעל עקף אותו ודבר לא מפריד בינו לבין רומא, מיהר לרדוף אחריו. חניבעל ארב לו באגם טראסימנו, והשמיד את צבאו בקרב טראסימנוס. כ-15,000 רומאים כולל פלאמיניוס עצמו נהרגו.
6,000 לוחמים רומאים הצליחו להימלט משדה הקרב ומצאו מקלט בכפר אטרוסקי סמוך. חניבעל שלח את מהרבעל בראש כוח פרשים ללכוד אותם. מהרבעל הקיף את הכפר והרומאים נכנעו לאחר שהובטח להם שלא יפגעו בהם. חניבעל כינס את כולם והודיע להם שמהרבעל לא היה מוסמך להבטיח להם את חייהם בשמו. הוא כלא את השבויים הרומאים, בעוד את בעלי בריתם שחרר לבתיהם באומרו שהוא בא להילחם ברומאים ולא באיטלקים. בדרך זו קיווה למשוך אחריו את בעלי בריתם של הרומאים.