חמלקרת נהרג בשנת 228 לפנה"ס במארב שטמן לו ראש שבט מקומי, ואת מקומו מילא עזרובעל חתנו. באותה שנה ייסד עזרובעל את העיר קרטחנה, ששימשה מאז כמרכזם של הקרתגים בספרד. ישנם רמזים שלמרות גילו הצעיר כבר היה חניבעל קצין בצבאו של גיסו. עזרובעל המשיך את משימתו של חמלקרת, אם כי בצורה מתונה יותר. דרך הפעולה החביבה עליו הייתה חתימת חוזים עם ראשי שבטים. כמו כן עודד נישואי תערובת בין קציניו לנשים מקומיות. חניבעל בעצמו נישא לנסיכה איברית בשם אימילקה. ככל הנראה היו אלה נישואים פוליטיים, אולם ייתכן שגם אהבה הייתה בהם. עיקר המידע אודות נישואיו של חניבעל מגיע מהמשורר הרומי סיליוס איטליקוס. לדבריו, חניבעל פגש את אימיליקה לראשונה כאשר התפלל במקדשה של תנית, והתאהב בה. נראה שגם היא אהבה אותו, שכן איטליקוס מוסר שהיא ביקשה ממנו להתלוות אליו במסעו לאיטליה. היא ילדה לו בן במהלך המצור על סגונטום, ומתה יחד עם הבן ככל הנראה ממגפה. בשנת 226 לפנה"ס חתם עזרובעל עם הרפובליקה הרומית על "אמנת האברו". במסגרת אמנה זו חולק חצי האי האיברי לאזורי השפעה בין רומא וקרתגו. הרומאים הכירו בשליטתה של קרתגו בשטחים שמדרום לנהר האברו, בעוד שקרתגו הכירה בשליטת רומא בשטחים שמצפונו.
בשנת 221 לפנה"ס נרצח עזרובעל בידי עבד קלטי שנטר לו טינה. חניבעל נבחר בידי הקצינים והחיילים כמפקד החדש, אף על פי שהיה רק בן 26. ההיסטוריון הרומאי טיטוס ליוויוס, מביא את הטעמים שבשלם לדעתו נבחר חניבעל למפקד: "הם ראו בו את דמותו של חמלקרת האהוב... אותם הפנים, אותה אש בעיניים". הבחירה התקבלה בברכה גם בקרתגו, ככל הנראה משום שלא היו הרבה מועמדים אחרים. מפעלו הראשון של חניבעל כמפקד היה השלמת כיבוש השטחים שמדרום לנהר אברו. הוא תקף את שבט האולקאדים, שחיו במחוז לה מנצ'ה של ימינו, כבש את עירם אלתיאה ובזז אותה. נפילת העיר הטילה אימה על השבטים האחרים שמיהרו לכרות ברית שלום עמו. לאחר מכן חזר חניבעל לקרטחנה למשך החורף, ובקיץ 220 לפנה"ס תקף את שבט הוואקים (Vaccei) שישבו לאורכו של נהר הדורו, וכבש בסערה את עריהם החשובות הרמאנדיקה וארבאקלה. נפילת הערים הסעירה את שבט הקרפטנים, השבט החזק והעשיר ביותר באזור, והללו התארגנו למאבק בחניבעל. הם הקימו צבא גדול, אלם חניבעל הביס אותם בקרב נהר הטחו. לאחר מכן אף שבט או עיר בהיספניה לא העזו להתנגד לשלטונו.
ראשית המלחמה ברומא.
תחילת המלחמה.
סגונטום הייתה מושבה יוונית ששכנה 150 קילומטרים מדרום לנהר האברו, ולפיכך נמצאה בתחום ההשפעה הקרתגי בהתאם ל"אמנת האברו". בשנת 230 לפנה"ס כרתו הרומאים ברית עם סגונטום. בשל כך הרגישה סגונטום מוגנת, והעזה להכריז מלחמה על בעלי ברית של חניבעל. בשנת 219 לפנה"ס החליט חניבעל לתקוף את סגונטום, והטיל עליה מצור. סגונטום פנתה לרומא בבקשת עזרה, והסנאט הרומאי שיגר שליחים אל חניבעל בדרישה שיסיר את המצור מעל העיר, אך האחרון דחה את הדרישה הרומאית. לאחר מכן פנתה המשלחת לקרתגו עצמה, שם נחלקו הפוליטיקאים האם להיכנע לדרישות הרומאים ולהסגיר את חניבעל, או לסרב ולגרור בכך מלחמה עם רומא. הסיעה הפציפיסטית בהנהגתו של חנו הגדול תמכה בכניעה, באחד מנאומיו הכריז חנו:
אולם מעטה הייתה השפעתו של חנו במועצה, וקרתגו סרבה להיענות לדרישות הרומאים. בתגובה באה כצפוי הכרזת מלחמה. הייתה זו תחילתה של המלחמה הפונית השנייה, המכונה לעיתים "מלחמת חניבעל". המצור על סגונטום היה ממושך יותר ממה שחניבעל ציפה, ורק כעבור תשעה חודשים נפלה העיר. חניבעל בזז אותה וביצע בה טבח. לאחר מכן היה עליו להתכונן למלחמה ברומא, כוחו כלל בסך הכל בערך 120,000 חיילים רגליים, 16,000 פרשים וכמה עשרות פילים. הוא שלח בערך 20,000 חיילים רגליים ו-2,000 פרשים להגנת אפריקה, ומספר דומה הותיר בספרד תחת פיקודו של אחיו עזרובעל, בתוספת צי קטן ובערך 20 פילים. עם שאר הכוח עמד חניבעל לצאת לאיטליה. את סגונטום הפקיד בידי מושל קרתגי בשם בוסטאר, ומסר בידיו גם בני ערובה מהשבטים באזור. הרומאים ציפו שחניבעל ייערך להגנה על היספניה מפלישה רומית, ועל כן הפקידו רק לגיון אחד בצפון איטליה במטרה לשמור על שקט מצד השבטים הגאלים המקומיים, שדוכאו זה מכבר. שני לגיונות תחת פיקודו של הקונסול פובליוס קורנליוס סקיפיו נשלחו למאסיליה (מרסיי), בעלת בריתה של רומא, במטרה להתארגן שם ולהביס את חניבעל בהיספניה. שני לגיונות נוספים תחת פיקודו של הקונסול השני טיבריוס סמפרוניוס לונגוס נשלחו לסיציליה במטרה לערוך משם פשיטות הטרדה על קרתגו עצמה ולהיערך לקראת פלישה לאפריקה. אולם תוכניתו של חניבעל הייתה אחרת, הוא תכנן להכות במקום שבו הרומאים לא יצפו להתקפה, באיטליה עצמה.
כדי לבצע משימה מורכבת זו ולהגיע אל איטליה עמדו בפניו שתי אפשרויות. הראשונה הייתה להפליג דרך הים מהיספניה לאיטליה, השנייה הייתה מורכבת יותר, לחצות את גאליה ולאחר מכן את הרי האלפים הקשים למעבר, וכך לחדור אל צפון איטליה. לכאורה הייתה הדרך הראשונה פשוטה יותר, אולם חניבעל בחר בדרך השנייה. חוקרים רבים תוהים מדוע בחר חניבעל בדרך המסובכת יותר לכאורה במקום בדרך הים הפשוטה. האדמירל האמריקאי אלפרד תייר מהן, הנחשב לאחד מהוגי הדעות הצבאיים-ימיים החשובים בהיסטוריה, סבור שעליונות הרומאים בים הרתיעה את חניבעל. חוקרים אחרים מעלים את הסברה לפיה קשיים לוגיסטיים מנעו זאת ממנו, שכן הצי שיכל חניבעל לבנות במספנות של קרטחנה בזמן כה קצר היה קטן מאוד, ולא היה יכול לאפשר את העברת החיילים, הפילים והציוד במהירות הרצויה.
המסע לאיטליה.
חניבעל יצא למסעו באביב של שנת 218 לפנה"ס. הוא החליט להתחיל את המסע בכיבוש כל צפון ספרד של ימינו. המטרה בצעד זה הייתה הרצון שלו לא להשאיר בעורפו אויבים שעלולים לסכן את שלטון קרתגו בהיספניה. חניבעל חצה את נהר האברו, כשהוא מפר בכך סופית את החוזה עם רומא, ודיכא את שבטי האילורגיטים, הברגוסים, האיירונוסים והאנדוסינים. מלחמות אלו עלו לו במחיר כבד, אולם חצי האי האיברי כולו עד הרי הפירנאים היה כעת בשליטתו. הוא הותיר באזור זה קרתגי בשם חנו כמושל, ועם 40,000 רגליים ו-12,000 פרשים בערך חצה חניבעל את הרי הפירנאים המפרידים בין היספניה לגאליה (היום צרפת).
לאחר מכן המשיך חניבעל לאורך גאליה. אזור זה היה מאוכלס בשבטים גאלים עוינים, לפיכך הקונסול הרומאי פובליוס סקיפיו, שכבר ידע על התקדמותו המהירה של חניבעל, ישב באפס מעשה, משוכנע שחניבעל יתעכב זמן רב. אולם חניבעל שיחד חלק מראשי השבטים והביס אחרים, וכך הגיע מהר מן המצופה אל גדתו הדרומית של נהר הרון. הוא שכר סירות רבות מכפרי המקומיים, ותכנן להעביר בהן את חייליו, אולם אז התארגנה נגדו קואליציית שבטים גדולה בצפון הנהר, והללו תכננו למנוע ממנו לעבור אותו. חניבעל הביס אותם בתמרון מבריק בקרב נהר הרון. לאחר מכן הגיע אליו מאגילוס, נציגה של קואליציית שבטים גאלים מעמק הפו שהייתה בברית עמו. מאגילוס מסר לחניבעל את המידע שהוא היה צריך אודות המסע לאיטליה. חניבעל הציג את מאגילוס בפני חייליו, וסיפר להם על תוכניתו השאפתנית לחצות את הרי האלפים ולפגוע במרכז איטליה. בינתיים הבין סקיפיו את תוכניתו של חניבעל לחצות את האלפים. הוא נדהם מתעוזתו אבל פעל במהירות, ושלח את אחיו גנאיוס להיספניה בראש הצבא, בעוד הוא עצמו הפליג במהירות לאיטליה בתקווה לעצור את חניבעל על נהר הפו.
בספטמבר של אותה שנה, הגיע חניבעל אל הרי האלפים המפרידים בין גאליה לחצי האי האפניני, עם 38,000 רגליים ו-8,000 פרשים. הוא החל להעפיל על ההרים, וכצפוי הייתה המשימה קשה ביותר. בחורף הטמפרטורה באזור יורדת במהירות, הגבעות מכוסות בשלג תמידי וקרחוני ענק נוצרים ביניהן. חייליו האפריקאים של חניבעל לא היו רגילים לקור שכזה, וקשה היה למצוא אוכל בכמות מספקת עבור הפילים שחלו בזה אחר זה. בנוסף על כך הטרידו אותם האלוברוגים, שבט פראי גאלי שחי בהרים. האלוברוגים תקפו שוב ושוב בנקודות הרגישות בשיירה של חניבעל, הם היו מעמידים פנים שרצונם בשלום, ואז תוקפים בשנית. חניבעל נאלץ להשמיד בהתקפות פתע את כפריהם, אולם גם לאחר מכן המשיכו ההטרדות. כאשר הגיע חניבעל לפסגות והחל לרדת, התברר שהמעבר כולו חסום בקרח ובשלג, מה שגרם למעידת החיילים והסוסים. חניבעל השתמש בדרכים לא שגרתיות כמו הבערת הקרח והתזת יין עליו, כדי לפנות את הדרך. לבסוף נחת חניבעל בעמק הפו באיטליה עם 20,000 חיילים רגליים ו-6,000 פרשים. המסע כולו לקח בערך חמישה חודשים, במהלכו איבד חניבעל רבים מחייליו.
המלחמה הפונית השנייה.
קרבות ראשונים בחצי האי האפניני.
בסוף שנת 218 לפנה"ס צבאו של חניבעל פלש לאיטליה דרך אזור אטרוריה. הוא נתן לחייליו זמן למנוחה ואז התקדם לכיוון נהר הפו. באזור כבר המתין לו צבא רומאי תחת פיקודו של פובליוס קורנליוס סקיפיו, שכאמור צפה מראש את תוכניתו של חניבעל. האחרון ראה שהמורל בקרב חייליו נמוך, וכדי לעודד אותם הכריח שני שבויים גאלים להילחם זה בזה עד מוות, ולאחר מכן נתן למנצח מתנות רבות ושחרר אותו. במחזה זה קיווה חניבעל להמחיש לחייליו את מצבם, הרי האלפים והים סוגרים עליהם, ועליהם לנצח את הרומאים או למות, כי אין לאן לסגת. כעבור זמן קצר נפגשו כוחות החלוץ של חניבעל וסקיפיו בקרב טיקינוס, בו הביסו פרשיו של חניבעל את יריביהם הרומיים וסקיפיו עצמו נפצע.