חניבעל הביא עמו לאיטליה כ-50 פילי מלחמה. במהלך המסע מתו רובם, ועד קרב טרביה שרדו רק מעטים מהם. הקרתגים השתמשו לרוב בפילים מזן פיל צפון אפריקני. פילים אלו היו קטנים יותר מהפילים האסייתיים, אם כי אוזניהם היו גדולות יותר וגבם קעור. גובהם היה 2.5 מטר והם היו כנועים ונוחים לאילוף. משקלם היה כמעט 6 טון, והם נשאו על גבם מגדל שבתוכו ישבו שניים או שלושה אנשים, שהיו בעיקר קשתים או מטילי כידונים. מלבד זאת, היה גם נהג שכיוון את הפיל. במקרה שהפיל איבד שליטה, נהגו הקרתגים לתקוע גרזן או אזמל בין עיניו. לעיתים נדירות השתמשו הקרתגים גם בפילים אסייתיים גדולים יותר אך קשים לשליטה.
הטקטיקה הקרתגית.
חניבעל נחשב לאחד המצביאים הגדולים בהיסטוריה. הוא ניתח את טקטיקת השדה הרומית ואת חולשותיה, ואימן את חייליו בהתאם. בשל העובדה שצבאו היה מרובה עממים, לא הייתה לצבא זה טקטיקת שדה אחידה, וחניבעל ידע לנצל את היתרונות הגלומים בכל סוגי החיילים שלו. שליטתו בהם הייתה ללא רבב, ולמרות השפות המרובות שלהם ומנהגיהם השונים, הוא הצליח ליצור מהם צבא אחיד היודע להילחם כאיש אחד ונאמן לקרתגו. חייליו לא בגדו בו גם בשעות הקשות ביותר, ומקרי העריקה בצבאו היו נדירים ביותר.
חניבעל ידע לפעול בצורה מקורית ולא שגרתית, שיטת הפעולה החביבה עליו הייתה הצבת מארבים לכוחות הרומיים. הוא היה בין המצביאים הראשונים בהיסטוריה שעשו שימוש יעיל במודיעין צבאי. הוא היה מראיין בעצמו שבויי מלחמה כדי לשאוב מהם מידע על כוחות האויב ועל מפקדי הצבא הרומי נגדם לחם, והיה טומן מארבים מוצלחים ומשמיד יחידות רומיות שלמות. חניבעל ניתח את אחת החולשות העיקריות של הצבא הרומי - חיל הפרשים, והבין עד מהרה שזוהי הזרוע הפחות חזקה של הצבא הרומי, ומולם הציב את הפרשים הנומידים וההיספנים המעולים שלו. קרבות בין פרשים רומים לפרשים מצבאו של חניבעל, הסתיימו בדרך כלל בניצחון קרתגי. הטקטיקה החביבה על חניבעל הייתה איגוף. במסגרת שיטה זו, היה חיל הרגלים הקרתגי, הנחות מחיל הרגלים הרומאי, מעכב במרכז את הכוח הרומי העיקרי, בעוד הפרשים היו מביסים את הפרשים הרומיים שהיו מוצבים באגפים, ולאחר מכן תוקפים את המאניפולוס הרומאי מעורפו.
הפיקוד הקרתגי.
בדומה לרומא, גם בני קרתגו בחרו את מנהיגיהם, אך אלו נשארו בקרתגו ולא יצאו למערכות. הפיקוד היה נתון בידיו של מצביא שקיבל רק הוראות כלליות ביותר מקרתגו, והיה חופשי, למעשה, לפעול בכל דרך שימצא לנכון. במלחמה זו היה הפיקוד העליון בידי חניבעל ותחתיו שרתו מפקדים זוטרים. מרבית המפקדים בצבא הקרתגי היו פונים, אולם קצינים אחרים כגון מהרבעל היו נומידים.
מהלך המלחמה.
פלישת חניבעל לאיטליה.
המצור על סגונטום נמשך זמן רב בהרבה מכפי שחניבעל תכנן (בין שמונה לתשעה חודשים), מה שאפשר לרומאים להתארגן היטב. שני לגיונות רומיים, מתוגברים בחילות עזר מקרב בעלות הברית של רומא באיטליה, נשלחו תחת פיקוד פובליוס קורנליוס סקיפיו (אביו של סקיפיו אפריקנוס) אל מאסיליה (בעיר מרסיי המודרנית), משם היו אמורים לתגבר את הכוחות הרומיים בצפון חצי האי האיברי ולתקוף את צבאו של חניבעל. שני לגיונות מתוגברים נוספים תחת פיקודו של טיבריוס סמפרוניוס לונגוס נשלחו אל ליליבאום ( במרסלה המודרנית) שבסיציליה, כדי לתקוף משם את החוף הצפון אפריקני ואת קרתגו עצמה. אולם חניבעל בחר לפעול בדרך בלתי צפויה. הוא לא המתין להגעת צבאו של סקיפיו להיספניה, אלא הקדים אותו ויצא במסע מזורז עם צבאו לפלוש לחצי האי האפניני בדרך היבשה, ולהעביר את המלחמה לשטח האויב.
לפי המקורות הרומיים, כלל צבאו של חניבעל בערך 120,000 חיילים רגליים, 16,000 פרשים וכמה עשרות פילים. הוא שלח כ-20 אלף חיילים רגליים ו-2,000 פרשים לצפון אפריקה כדי להגן על קרתגו מתקיפה רומית, וכוח בסדר גודל דומה נשאר בהיספניה תחת פיקודו של אחיו עזרובעל. כמו כן הותיר חניבעל בהיספניה צי קטן ובערך 20 פילים. שאר הצבא נועד לצאת למסע המלחמה לאיטליה. העיר סגונטום הופקדה בידי מושל קרתגי בשם בוסטאר, וחניבעל הפקיד בידיו בני ערובה שלקח מכל מנהיגי השבטים האיבריים. לחניבעל היה מודיעין מדויק באשר למקומות שבהם הוא עומד לעבור, מאחר שבתקופה שבין שתי המלחמות הפוניות שוטטו סוחרים קרתגים באופן חופשי בחצי האי האפניני, מה שאפשר לחניבעל לשתול מרגלים בקרב שבטי הגאלים בגאליה ובעמק הפו. במהלך חורף 218/219 לפנה"ס שחרר חניבעל את חייליו ההיספניים לבתיהם, ובאביב שנת 218 לפנה"ס גייס שוב את צבאו ויצא למסע לאיטליה. הוא השתלט על צפון היספניה (שעל פי אמנת האברו הייתה מחוץ לתחום השלטון הקרתגי), ועם 40,000 רגלים ו-12,000 פרשים בערך, חצה את הרי הפירנאים המפרידים בין היספניה לגאליה (היום צרפת).
סקיפיו קיבל ידיעות על כך שחניבעל חצה את הפירנאים, אולם סבר שחניבעל רוצה להילחם נגד צבאו בגאליה במקום בהיספניה. סקיפיו חנה סמוך לשפך נהר הרון. הוא סבר שהנוכחות של מספר רב של שבטים גאלים עוינים באזור, תעכב את הגעת צבאו של חניבעל לנהר, ולכן לא מיהר לקראתו. אולם חניבעל פעל במהירות מפתיעה. הוא שיחד שבטים אחדים וכפה ברית על אחרים, וצבאו הגיע תוך זמן קצר אל גדתו המערבית של הנהר. קואליציה של שבטים גאליים ניסתה לחסום את דרכו ולמנוע ממנו לחצות את הנהר, אולם הוא הביס אותם בקרב נהר הרון, וצבאו צלח את הנהר. לאחר מכן הגיעה אל המחנה הקרתגי קבוצת ראשי שבטים שהיו בקשר עם חניבעל עוד לפני שפתח במסע לאיטליה, ובראשם ראש שבט בשם מאגילוס. חניבעל הציג אותו בפני חייליו, ולאחר מכן נאם בפניהם, שיבח אותם על גבורתם וסיפר להם לראשונה על תוכניתו השאפתנית לפלוש לאיטליה. הוא שלח כוח של 500 פרשים נומידיים לאתר את מיקומו של הצבא הרומאי. הפרשים נתקלו בכוח סיור רומאי שנשלח למטרות דומות בידי סקיפיו, הובסו ונסוגו חזרה אל המחנה. הפרשים הרומאים שדלקו אחריהם השקיפו מרחוק על המחנה הקרתגי, ודיווחו על ממצאיהם לסקיפיו. סקיפיו הופתע, אולם ארגן במהירות את צבאו והחל לשוט עמו במעלה נהר הרון בתקווה לחסום את דרכו של חניבעל ולכפות עליו קרב. חניבעל, שלא היה מעוניין בעימות עם צבאו של סקיפיו, המשיך להתקדם במהירות לכיוון צפון-מערב וסקיפיו הבין שלא יוכל להדביק את צבאו. בשלב זה כבר לא היה ספק לסקיפיו באשר לכוונתו של חניבעל לפלוש לאיטליה, ולכן הוא שלח את אחיו גנאיוס עם מרבית הצבא שבפיקודו להמשיך במשימתו המתוכננת בהיספניה, בעוד הוא עצמו הפליג במהירות האפשרית לאטרוריה שם החל לגייס צבא חדש מתוקף תפקידו כקונסול כדי לעצור את צבאו של חניבעל לאחר שזה יחצה את הרי האלפים .
בספטמבר, החל צבאו של חניבעל לחצות את הרי האלפים, שהפרידו בין גאליה (צרפת של ימינו) לבין האזור שהרומאים כינו גאליה קיסאלפינה (איטליה מצפון לנהר הפו), עם 38,000 רגליים ו-8,000 פרשים. כצפוי, התברר שמדובר במשימה קשה ביותר. חייליו האפריקאים של חניבעל, שהיו רגילים לתנאי אקלים חמים, סבלו קשות מהקור והשלג. הפילים חלו כולם, והורגש מחסור כבד במזון. אולם מכשול גדול יותר היה ההתקפות של האלוברוגים, שבט גאלי עוין ששכן באזור דרכו עבר צבאו של חניבעל. הוא הצליח אך בקושי לגבור על התנגדותם ולהגיע אל פסגת ההרים. פוליביוס מציין שחניבעל הגיע אל פסגות ההרים בזמן ש"תקופת השקיעה עם בוקר של הפליאדות כבר הגיעה ושלג כיסה את פסגות ההר", מה שרומז על 7 או 9 בנובמבר. צבאו של חניבעל החל בירידה מההרים, שהייתה קשה לא פחות מההעפלה עליהם. הדרך הייתה צרה, מכוסה סלעים שלג וקרח, ובמקרה אחד נאלץ חניבעל להורות לחייליו לפלס דרך תוך שימוש בנוזלים חמים, שהותזו על המכשולים שחסמו את המעבר כדי לפורר את הסלעים. חציית האלפים ארכה שישה-עשר יום ובסופם הגיע צבאו המותש של חניבעל אל אדמת איטליה עם 20,000 רגלים, 6,000 פרשים, ומספר לא ברור של פילים.
קרבות ראשונים.
כאשר צבאו המוחלש והתשוש הגיע לבסוף למרגלות הרי האלפים, עמדו בפני חניבעל שתי משימות עיקריות: הראשונה הייתה לדאוג למזון ומנוחה עבור חייליו, והשנייה הייתה לגייס לצידו במהירות בעלי ברית, כיוון שבשלב זה הגיע צבאו בקושי לממדי צבא קונסולרי ממוצע. את שתי הבעיות ניתן היה לפתור באמצעות השבטים הגאליים, ששכנו באזור שמצפון לנהר פו. השבטים הגאלים החזקים ביותר ששכנו באזור באותה תקופה היו הבויים, האינסוברים והטאורינים. כאשר הגיע חניבעל לאזור, הסתכסכו האינסוברים, שהיו בעלי בריתו, עם הטאורינים. חניבעל התערב לטובת האינסוברים, הטיל מצור על בירתם של הטאורינים (טורינו), ולאחר שלושה ימים של מצור כבש אותה וטבח בתושביה. הייתה זו תצוגה מחושבת של אכזריות, שנועדה להטיל מורא על השבטים האחרים באזור ואכן חלק מהשבטים הצטרפו אליו אולם מרביתם חששו מהרומאים והעדיפו להישאר נייטרליים. מספר שבטים אף שרתו כחיילות עזר בצבא הרומאי.