A las ocho de la mañana del día 4, el ejército federal inició la marcha de aproximación sobre las posiciones del enemigo, integrando el flanco derecho con tropas de infantería y de artillería de montaña (ocho piezas de 70 mm.). El centro con artillería divisionaria (dieciséis piezas de 77 mm.) y dos batallones de apoyo, mientras que el lado izquierdo quedó compuesto por dos regimientos de caballería, dos batallones de infantería y una batería de ametralladoras. En reserva quedaron 650 infantes del 1/er. Grupo de Voluntarios del D.F. y el 2/o Cuerpo Auxiliar de San Luis Potosí.
Inicialmente intervino la artillería federal, que efectuó disparos de ablandamiento hasta silenciar a los cañones rebeldes, lo que permitió el ataque de la infantería y caballería sobre el enemigo. Orozco reaccionó ordenando un contraataque sobre el flanco derecho de Huerta, pero no tuvo éxito y sus tropas tuvieron que retroceder, entablándose un combate en campo abierto en el que los orozquistas no pudieron impedir que los soldados federales se apoderaran de las principales elevaciones, y poco después un movimiento envolvente de la caballería por la retaguardia orozquista decidió la batalla.