בסוף 214 לפנה"ס נמסר ניהול המלחמה בסיציליה לידי הקונסול מרקוס קלאודיוס מרקלוס. הוא כבש את לאונטיני וב-213 לפנה"ס הטיל מצור על סירקוסאי מן הים והיבשה כאחד. שישים קווינקוורמות, מצוידות במכונות מצור, תקפו את חומות הים של העיר, בעוד הצבא בפיקוד אפיוס קלאודיוס פולכר תוקף מן היבשה. ניסיונות השניים לכבוש את העיר בסערה סוכלו על ידי כלי הקלע והמכונות של ארכימדס, ועל כן חדלו מהתקפותיהם, והחליטו להרעיב את העיר עד כניעתה על ידי הטלת הסגר מן הים באמצעות הצי והסגר מצד היבשה באמצעות הצבא. ב-212 לפנה"ס ניסה שוב בומילקר להעביר לנצורים תגבורת ואספקה, שהובאו מקרתגו בשבע-מאות אוניות משא מלוות על ידי מאה ושלושים אוניות מלחמה. מרקלוס חשש כי אם יגיעו האוניות ליעדן ייחרץ גורל המצור לכישלון ואולי גם עתיד המערכה כולה, שכן באותו זמן נאסף צבא רב מכל רחבי האי ונערך להתקפה על הרומאים הצרים על העיר. מרקלוס העלה את חייליו לאוניות ונערך לקרב ימי, אך בומילקר נמנע מהתמודדות, פקד על אוניות המשא לשוב לקרתגו והוא עצמו שט עם אוניותיו אל טרנטום. העיר הוסגרה לבסוף לידי הרומאים על ידי מואריקוס, שכיר חרב קלט-איברי מהיספניה, אותו הפקידו הסירקוסאים על הגנת המבצר והחומות החולשים על הנמל. שנה אחר כך, ב-210 לפנה"ס, הצליח הקונסול מרקוס ואלריוס לאיווינוס להשתלט על האי כולו. לקראת סוף הקיץ של אותה שנה ניסתה שייטת קרתגית בת ארבעים אוניות, בפיקוד חמילקרת, לפשוט על סביבות אולביה שבסרדיניה. כשמיהר הפראיטור פובליוס מאנליוס וולסו להתייצב בחוף נגד הפולשים, שטו סביב האי אל עברו השני, בזזו את אדמת קאראליס ושבו ללא פגע עמוסי-שלל אל קרתגו.
קודם שובו של לאיווינוס לרומא, כדי לדווח לסנאט על הישגיו, הוא שיגר את מפקד הצי (praefectus classis) מרקוס ואלריוס מסאלה לאפריקה, כדי לבוז את אדמת קרתגו ולאסוף ידיעות על קורות הקרתגים והכנותיהם. מסאלה, עם חמישים אוניות מלחמה, פשט על סביבות אוטיקה ושב לליליבאיון לאחר 13 ימים עם שלל רב ושבויים. מחקירתם נודע לו על הכנות עזרובעל לפלוש לאיטליה מהיספניה דרך האלפים כדי לחבור לאחיו חניבעל. השבויים סיפרו עוד, כי צי גדול נאסף בקרתגו, והוא עומד לצאת לדרכו בימים הקרובים כדי להשיב לקרתגו את השליטה בסיציליה.
המידע המודיעיני שנאסף באמצעות הצי איפשר לרומאים להיערך מבעוד מועד לשתי המשימות. עזרובעל ועשרים אלף חייליו הצליח אומנם להגיע בנתיב היבשתי מהיספניה אל צפונה של איטליה, אך הובס ונהרג בקרב מטאורוס (207 לפנה"ס) קודם שהצליח לחבור לחניבעל. מאמץ קרתגי נוסף להעביר לחניבעל תגבורות ואספקה, הפעם בדרך הים, נעשה לאחר הקרב. 100 אוניות משא עמוסות אספקה, חיילים וכסף עשו דרכן מקרתגו אל ארצם של הברוטיים בדרום איטליה, שהיו בעלי ברית לקרתגים. האוניות נטרדו ברוח אל עבר סרדיניה, שם הותקפו על ידי אוניות המלחמה של הפראיטור הרומי. עשרים מביניהן טבעו, שישים נפלו בשבי והיתר הצליחו להימלט חזרה לקרתגו.
העליונות הימית הרומאית סיכלה את הניסיונות החוזרים ונשנים של הקרתגים לחולל מפנה במערכה הארוכה והמתישה שניהל חניבעל באיטליה, אך הם עדיין לא אמרו נואש. ב-205 לפנה"ס יצא מאגו בן חמילקרת מן האיים הבלאריים וחצה את הים הטירני בשלושים וכמה אוניות מלחמה ומספר רב של אוניות משא ובהן שנים-עשר אלף רגלים וכאלפיים פרשים. הוא הנחית את הכוחות בחוף ליגוריה באין מפריע, לכד את ג'נובה והסית את השבטים המקומיים למרוד ברומא. כשהגיעו אליו ידיעות, כי פובליוס קורנליוס סקיפיו שב מהיספניה והוא מתכונן לפלוש לאפריקה מסיציליה, השאיר אצלו עשר אוניות ואת היתר שלח אל קרתגו כדי להגן עליה מפני ההתקפה המתרגשת ובאה. גורל אחר פקד את שמונים אוניות המשא הקרתגיות אשר הובילו אספקה ותבואה אל חניבעל, ונלכדו באותו זמן לערך על ידי גנאיוס אוקטביוס רופוס בחופי סרדיניה. היה זה הניסיון האחרון של הקרתגים להושיט לחניבעל סיוע בדרך הים, שכן משעה זו ואילך ריכזו את כל מאמציהם בהכנות להדיפת הפלישה המתוכננת של סקיפיו לארצם.
הים האדריאטי.
מקור סיוע נוסף בו תלה חניבעל תקוות היה פיליפוס מלך מוקדון. הלה החליט לנצל את חולשת רומא לאחר קרב קאנאי כדי להשתלט על איליריה, שהייתה פרוטקטוראט רומאי, וב-215 לפנה"ס שלח בחשאי שליחים מטעמו לשאת ולתת על הסכם עם חניבעל. תנאי ההסכם שנחתם קבעו כי המלך יכין צי גדול, בן כמאתיים אוניות, יפלוש לאיטליה, יבוז את החופים ויילחם בים וביבשה בכל הכוח שברשותו; בתמורה יוכל להרחיב כרצונו את גבולות ממלכתו ביבשת יוון ובאיים. איתרע מזלו של פיליפוס, ושליחיו נתפסו בשובם לארצם על ידי שייטת האוניות שהגנה על חופי איטליה בין ברונדיסיום לטארנטום. כשלמד הסנאט על דבר ההסכם שנחתם, הקצה חיילים למלחמה בפיליפוס על אדמת יוון (המלחמה המוקדונית הראשונה) והכפיל את כוחה של השייטת מ-25 ל-50 אוניות; צי זה, בפיקוד פובליוס ואלריוס פלאקוס, נצטווה לא רק להגן על חופי קלבריה, אלא גם לאסוף ידיעות מודיעיניות על הנעשה מעבר לים, כך שאם המלך יצא למסע כיבושיו כפי שתכנן, יועבר צבא באוניות כדי לסכל את צעדיו.
הלחימה החלה שנה אחר כך, בקיץ 214 לפנה"ס, תוך כדי מצור הרומאים על סירקוסאי. פיליפוס הטיל מצור על אפולוניה, שהייתה בעלת ברית לרומא מאז 229 לפנה"ס, וכבש את אוריקום. כשהגיעו הידיעות למרקוס ואלריוס, הפרו-פראיטור המופקד על הגנת ברונדיסיום וחוף קלבריה, יצא בראש הצי והצבא שברשותו אל אוריקום. העיר נכבשה ללא כל קושי, ואחר כך תקפו הרומאים בחסות הלילה את המוקדונים הצרים על אפולוניה והפילו בהם חללים רבים. פיליפוס ושארית חייליו נמלטו בעור שיניהם חזרה אל ארצם.
השייטת הרומית המוצבת בקלבריה המשיכה גם בשנים הבאות לפקוח עין על תנועת האוניות החוצות את הים האדריאטי, ובעצם נוכחותה סילקה מראשו של פיליפוס כל מחשבה לבוא עם חייליו לעזרת חניבעל. את מסעות המלחמה שלו ניהל המלך המוקדוני מעתה ואילך על אדמת יוון בלבד. ב-205 לפנה"ס, כשהגיעו הידיעות על הפלישה המתוכננת של צבא סקיפיו לאפריקה, שוב ניסו הקרתגים לשדל את פיליפוס להנחית את חייליו בסיציליה או באיטליה, אך ללא הועיל.
הפלישה לאפריקה.
ב-206 לפנה"ס, לאחר ששם קץ לשלטונם של הקרתגים בהיספניה, שב קורנליוס סקיפיו לרומא כגיבור. הוא שטח בפני הסנאט את תוכניותיו לסיום המלחמה על ידי העברתה לאדמת אפריקה, אך נתקל בהתנגדות חלק מן הסנאטורים. לבסוף ויתרו מתנגדיו, סקיפיו נבחר לקונסול של שנת 205 לפנה"ס וקיבל לפיקודו את הפרובינקיה סיציליה. באביב 204 לפנה"ס, בתום שנה של הכנות, הפליג מליליבאום צבא של 17,000 חיילים ב-400 אוניות משא ו-40 אוניות מלחמה. דומה שהעליונות הימית הרומאית הייתה מוחלטת, שכן הצי הקרתגי, שמנה אותה עת 100 אוניות מלחמה, לא עשה כל ניסיון להשמיד את צי המשלוח בעודו בדרך.
צבא הפלישה נחת סמוך לעיר אוטיקה, ומיד נערך סקיפיו להטיל עליה מצור. מאחר שנסיונותיו להכניע את העיר לא צלחו והחורף התקרב, חדל ממלאכתו לאחר ארבעים יום; הוא הקים מחנה חורף לחייליו על חצי אי סלעי סמוך לעיר שנקרא לימים קאסטרה קורנליאנה, והעלה את אוניותיו על החוף. האספקה לכוחותיו הגיעה באין מפריע בדרך הים מסרדיניה, מסיציליה ומאיטליה. בראשית אביב 203 הוריד סקיפיו את אוניותיו הימה והציב עליהן מכונות מצור וכלי קלע, ובמסווה של חידוש המצור מן הים והיבשה כאחד תקף בעורמה ובהפתעה את צבאות עזרובעל בן גיסקו וסיפאקס במחנותיהם והרג את מרבית חייליהם. רוחם של הקרתגים נפלה, ובקרתגו נשמעו קריאות להשיב את חניבעל מאיטליה ואף לשאת ולתת על שלום עם הרומאים. בסופו של דבר הוחלט, חרף האבדות הכבדות, לאסוף שוב חיילים כדי לסלק את הפולשים. אלא שמפלה רדפה מפלה, והצבא החדש שגייסו עזרובעל בן גיסקו וסיפאקס הובס גם הוא על ידי חיילי סקיפיו ומסיניסה בקרב המישורים הגדולים.
קרתגו נותרה ללא צבא יבשה, ובאין כל ברירה אחרת, החליטו הקרתגים לשים יהבם על הצי, אותו הכינו במהלך החורף, ולהתקיף את אוניות הרומאים המטילות מצור על אוטיקה. מאחר שידעו כי גם אם ינצחו בקרב הימי תוכרע המלחמה בסופו של דבר ביבשה, שיגרו הודעה אל חניבעל וקראו לו לשוב מיד עם צבאו אל אפריקה, ואף החלו שוקלים לבקש שלום מאת הרומאים כדי לסיים את המלחמה.
סקיפיו, שעסק אותה עת בכיבוש סביבותיה של קרתגו ונערך להכנעת העיר טונס (תוניס), ראה ממרחק את הצי הקרתגי עושה את דרכו אל עבר אוטיקה. הוא ידע כי אוניותיו, העמוסות מכונות מצור וכלי קלע והן קרובות לחומות העיר, אינן מוכנות להתמודדות בקרב ימי סדור, ועל כן חש במהירות להצלת אוניות האספקה והמלחמה גם יחד. הוא עגן את אוניות המלחמה בשורה אחת, סידר סביבן את אוניות המשא במערך שעומקו שלוש-ארבע שורות וקשר אותן זו לזו באמצעות תרנים וסקריות, תוך שהוא מותיר ביניהן רווחים המתאימים לגיחת ספינות קלות. כך יצר מעין חומה ארוכה ו"שדה קרב" גם יחד, שעליו יכלו חייליו להביא לידי ביטוי את יתרונם בלוחמת סיפונים וירי כלי קלע. הקרתגים תקפו באוניותיהם את אוניות המשא, ותחת מטר הקלעים הצליחו לגרור באמצעות אונקלים וללכוד 60 אוניות משא על מטענן. ליוויוס כותב, כי היסוסי הקרתגים והתמהמותם היא שהצילה את הרומאים מאסון; לו תקפו את יריביהם מיד, קודם שהספיקו להקים את חומת אוניות המשא, אפשר שהיו מצליחים לנתק את צבא סקיפיו ממקורות האספקה והתגבורת שלו ולהכותו כשהוא מבודד באפריקה.
כניעת קרתגו.