El 4 de febrero Marcó del Pont supo que los patriotas avanzaban por la ruta de Los Patos; que otra columna llegaba por la ruta de Uspallata y que otras fuerzas habían pasado la cordillera por el Planchón. Vaciló ante la múltiple amenaza y tan sólo el 10 ordenó que se replegaran hacia la capital las tropas de Colchagua, Talca y Curicó, y nombró comandante de sus tropas al brigadier Rafael Maroto.
El ejército de los Andes avanzó por el camino de Santa Rosa de los Andes hacia la hacienda de Chacabuco, unos kilómetros al norte del Morro de las Tórtolas Cuyanas, donde el camino se bifurcaba; el más transitado era el de la Cuesta Vieja, por el que marchó la división de O'Higgins; por el otro avanzó la división de Soler. Los cerros de las Cabras, Morillos y Chingue impedían que las dos columnas se mantuviesen visibles en el avance; tanto al este como al oeste, las serranías escarpadas dificultaban su escalamiento.
Los realistas habían reunido 3.000 hombres con 5 piezas de artillería, sumando las fuerzas que llevaba Maroto a las que habían replegado Marquelí y Quintanilla después de Las Coimas. El 11 de febrero llegó Maroto a la hacienda de Chacabuco e ignoraba la posición del enemigo, pues un contingente de exploración que había ordenado el día anterior, en parte había sido capturado y en parte se había pasado a los patriotas.
Maroto quería ocupar el 12 de febrero por la mañana la cresta que domina el Aconcagua, y resistir allí hasta la llegada de los refuerzos que había pedido a Marcó del Pont; pero en la madrugada del 12 el destacamento avanzado de Mijares fue arrollado por los patriotas y tuvo que replegarse a la hacienda de Chacabuco. En vista del contraste sufrido, Maroto alteró su dispositivo de lucha, estableciendo la línea entre el cerro Guanaco y el Morro del Chingue, bordeando la pendiente norte del cerro Quemado. El avance por la Cuesta Vieja quedó así bloqueado, sin advertir que el camino de la Cuesta Nueva, por donde avanzaba el grueso del ejército, tomaba a los realistas por la retaguardia.
La batalla de Chacabuco fue una decisiva contienda de la Independencia de Chile en la cual combatieron el Ejército de los Andes, formado por tropas de las Provincias Unidas del Río de la Plata y chilenas exiliadas en Mendoza, y el Ejército Realista, resultando en una firme victoria para el bando independentista comandado por el general José de San Martín. La batalla tuvo lugar el 12 de febrero de 1817, en la colina de Chacabuco ubicada a 55 km al norte de la ciudad de Santiago
O'Higgins recibió orden de hostigar al enemigo sin comprometerse a fondo; debía atraer la atención de los realistas hasta que la columna de Soler, con recorrido más largo, llegase al flanco oeste de la posición de Maroto, en cuyo momento se lanzaría al asalto combinado.
A mediodía del 12 de febrero, O'Higgins alcanzó el Morro de las Tórtolas Cuyanas sin ningún inconveniente, pero en lo sucesivo debía proceder cautelosamente, para no comprometerse antes de que llegase la columna de Soler a su meta por la Cuesta Nueva. Pero no obstante las instrucciones de San Martín, O'Higgins decidió avanzar hasta la distancia de tiro de las posiciones enemigas y, pasando el cerro de los Halcones, abrió fuego y una hora después ordenó el asalto al cerro del Guanaco y al cerro Quemado. El fuego cruzado del enemigo obligó a los atacantes a replegarse detrás del Morro de las Tórtolas Cuyanas.
San Martín presenció desde lo alto de la cuesta el sacrificio de O'Higgins y temiendo que Maroto se aprovechase de la ventaja lograda, hizo comunicar por Álvarez Condarco a Soler que acelerase la marcha y se lanzó al galope cuesta abajo para tomar personalmente el mando de la primera división. Cuando llegó al Morro de las Tórtolas Cuyanas, ya era tarde, pues O'Higgins, reorganizado rápidamente, había vuelto al ataque y se empeñó por segunda vez en una acción arriesgada. Esta vez con suerte, pues apenas iniciado el segundo ataque contra los realistas se hizo sentir la proximidad de Soler en el flanco oeste, ya que había llegado a la pendiente occidental del cerro del Chingue sin que sus defensores lo descubrieran. Empeñada la lucha con un batallón, los españoles comprendieron que la pérdida del cerro equivalía a la derrota. Mientras atacaba O'Higgins, desplegó la primera división enteramente. Maroto se vio comprometido por el ataque al centro de su dispositivo por las fuerzas de Soler; O'Higgins reunió sus batallones en línea cerrada y cargó a la bayoneta contra la izquierda del centro enemigo.
En ese momento llegó San Martín al campo de lucha, tomó la bandera y se puso al frente de los granaderos a caballo, cargando sobre el ala derecha de la posición de Maroto; los escuadrones de Medina y Zapiola arremetieron con furia, mientras los batallones 7 y 8 se apoderaban del cerro Guanaco, haciendo retroceder a sus defensores. Y no tardó en ceder el cerro del Chingue, donde sus defensores habían sido sorprendidos.
La maniobra envolvente se completó por los granaderos y el escuadrón escolta de Mariano Necochea, que penetró en la retaguardia realista y arrolló a su caballería. Viéndose sin salida, los españoles formaron el cuadro, último recurso desesperado, pero fueron destrozados en esa última resistencia.
La infantería realista dispersa intentó afianzarse en las casas de la hacienda, pero no lo permitieron sus perseguidores y tuvo que rendirse a discreción. La mitad de los efectivos emprendió la fuga, perseguida por la caballería patriota hasta el portezuelo de La Colina.
En la carta a Miguel de la Barra, el 19 de agosto de 1841, acusando recibo de la biografía del "bueno y honrado" Justo Estay, evoca San Martín algunos recuerdos de la batalla de Chacabuco:
"Dos días antes de la salida de la expedición de Mendoza para Chile envié a Justo a Santiago: sus verbales eran reducidas a que luego que supiese el punto por donde el ejército patriota penetrase viniese a buscarme trayéndome las noticias de las fuerzas enemigas. El 10 de febrero habíamos tomado posición al pie de la Cuesta de Chacabuco, y yo no pensaba romper mi movimiento hasta la llegada de la artillería que Beltrán me había escrito que a pesar de todos sus esfuerzos no podría llegar a Aconcagua hasta el 13 o el 14, y al mismo tiempo esperar pero el 1 a las 11 y tres cuartos de la noche se me presentó Justo anunciándome que todas las fuerzas del Sud al mando de Morgado venían a marchas forzadas a unirse con las que teníamos al frente; con esta noticia mi partido fue tomado en el momento y cuatro horas después, es decir el 12 a las 4 de la mañana nos pusimos en movimiento. Por lo expuesto Vd. conocerá que sin el oportuno aviso de Estay las fuerzas enemigas se hubieran reunido y el éxito de la campaña hubiera sido muy dudoso. Lo más admirable de este hombre de bien es que él salió de Santiago a las 3 de la mañana del mismo día 11 y se vino a encontrarme por las Cordilleras, pues todo el camino de Santiago a Chacabuco se hallaba interceptado por los españoles"