Los austriacos atacaron muy temprano, tomando por sorpresa a los soldados españoles. Los dos regimientos españoles de Dragones (Batavia y Lusitania) pararon el ataque, para dar tiempo al resto del ejército a prepararse para la batalla. Ambos regimientos fueron diezmados, pero su sacrificio le dio la oportunidad al Marqués de Lede de contraatacar. Los austriacos fueron obligados a retroceder mientras los españoles les perseguían, causándoles de esta manera muchas bajas.
Los austríacos perdieron unos 1,500 hombres y 300 cayeron prisioneros. Por su parte, los españoles perdieron otros 1,500 hombres y 200 fueron capturados. Tras esto, Mesina fue tomada por los españoles, pero aun así no consiguieron expulsar completamente a los austríacos de la isla, creando estos una cabeza de puente alrededor de Milazzo. Esta cabeza de puente y la superioridad naval en la zona tras la Batalla del cabo Passaro, les dio a los austríacos la oportunidad de mandar más tropas al año siguiente, derivando esto en la Batalla de Francavilla que resultó también en una victoria española.