Díaz, quien temía ser abatido por la superioridad numérica de los soldados franceses, decidió adelantárseles y enfrentarlos antes de que lograran su objetivo; formó su ejército en dos columnas, una de ataque y otra interceptora.
La batalla se efectuó el 18 de octubre a las 11:00 a. m. y fue muy breve: la columna imperial de refuerzos, fue sorprendida por el embate de los soldados republicanos que los atacaban desde distintos frentes y finalmente destruida; la victoria liberal se consolidó en tan solo una hora.
Al caer la tarde, el enemigo había sido derrotado.
Víctimas republicanas fueron de 78 muertos y 153 heridos.
La batalla se dio en el municipio de San Francisco Telixtlahuaca, distrito de Etla, Oaxaca, en el lugar ahora llamado La Carbonera, donde cada año el 18 de octubre se conmemora esta batalla.