Atento al avance español, San Martín, convencido de su plena capacidad para oponerse al mismo consideró esta geografía como la más adecuada para presentar batalla. El dispositivo patriota se desplegó, el 4 de abril, sobre Loma Blanca y el realista, al mando de Osorio, sobre la elevación triangular. En las primeras horas de la mañana siguiente, el Libertador hizo el reconocimiento de la posición enemiga, observando que el grueso de las fuerzas españolas se había desplegado sobre un costado de la meseta previendo la posibilidad de un envolvimiento del mismo. El jefe realista había mandado emplazar dos cañones sobre el cerro Errázuriz y reforzado su artillería con cuatro compañías de Cazadores. Según el relato de O’Brien, San Martín exclamó: “Osorio es más torpe de lo que yo creía. El triunfo de este día es nuestro: ¡el sol por testigo!”
El plan realista fue defensivo, pues Osorio, en su parte del 17 de abril, manifestó que esperaba conocer las ideas de San Martín. El jefe español distribuyó sus fuerzas en línea, sobre la base de tres agrupaciones: Primo de Rivera (compañías de Granaderos y Cazadores), Morla y Ordóñez. En el ejército realista algunos jefes, como Ordóñez y Morgado, sostenían la necesidad de una actitud ofensiva, tal cual había ocurrido en la junta de guerra previa a Cancha Rayada. Estos disensos se hicieron sentir también durante el combate y contribuyeron a la derrota española en Maipo. Un aspecto interesante del dispositivo inicial de Osorio fue que no dejó reserva: durante la batalla intentó organizarla sobre la base de la agrupación de Granaderos y Cazadores de Primo de Rivera, pero fue imposible por estar este jefe empeñado en combate con la división de Las Heras.
El plan y el dispositivo de San Martín, en cambio, fue ofensivo, aprovechando las ventajas del terreno para lograr una rápida victoria. Comprendió dos líneas y tres divisiones: Las Heras, al oeste; Alvarado, al centro-este y la reserva, con tres batallones a órdenes de Quintana, centro y retaguardia.
La batalla se inició con un intenso fuego de la artillería patriota, que fue contestado por la realista. Era cerca del mediodía del 5 de abril de 1818. La división Las Heras encabezó el ataque a la posición de Primo de Rivera, con el fin de conquistarla y amenazar luego el flanco del dispositivo enemigo. La artillería española de los cerrillos de Errázuriz, abrió fuego de flanco sobre el Batallón No 11, sin detenerlo, mientras que los Dragones de Morado cayeron sobre Las Heras, quien ordenó a Zapiola para que los contuviera.
Entre tanto, la artillería de Blanco Encalada trataba de neutralizar el contraataque de los Dragones. Los dos escuadrones que encabezaban la formación de los Granaderos a Caballo, a las órdenes de Escalada y Medina, arrollaron a los Dragones empujándolos hacia el flanco noroeste del dispositivo realista (división “Morla”), pero, después de sufrir bajas, fueron obligados a replegarse. Reorganizados, con cuatro escuadrones, volvieron los Granaderos patriotas al ataque, haciendo desaparecer a los Dragones del campo de batalla.
El Batallón N 19 se posesionó de una pequeña altura desde la cual amenazó a los batallones Burgos y Arequipa. Cuando la División Alvarado, acompañando el avance de Las Heras, se encontraba a media distancia de la primera línea realista, Ordóñez ordeno un contraataque frontal con toda su división, que fue acompañada por los batallones Burgos y Arequipa. El Libertador ordenó, inicialmente, que la artillería de Borgono tratara de detener tal reacción, cosa que pudo concretar “con fuego de metralla”, pero sin impedir una cierta vacilación que fue salvada por la oportuna presencia de Quintana con la reserva.
Este fue el momento crítico de la batalla. Las Heras ordenó que el Batallón “Infantes de la Patria” concurriera en ayuda de Alvarado, para equilibrar la situación. Si bien la caballería realista del flanco derecho había sido cargada y derrotada por Freire, subsistía el peligro del avance de Ordóñez. San Martín dispuso el rápido movimiento de la reserva, que con sus tres batallones ejecutó un ataque al flanco derecho del dispositivo español que había iniciado el contraataque.
El brigadier Osorio, antes de producirse la crisis patriota, había dispuesto la concurrencia de Primo de Rivera como reserva. Esta orden, que inicialmente podría haberse cumplido con cierta dificultad, se ejecutó en el peor momento, porque los efectivos de Errázuriz estaban aislados del resto de la acción. En el cuadro final de la batalla, el dispositivo realista fue rodeado por la división Las Heras al oeste, Alvarado en el centro y Quintana al este. Ambas caballerías patriotas, de Zapiola y de Freire, completaron el cerco. Osorio trató de replegarse sobre la hacienda “Los Espejos”, y no consiguiéndolo, huyó en dirección a Talcahuano. Ordóñez ofreció la última resistencia en la misma hacienda, viéndose obligado a rendirse en menos de media hora.
La batalla finalizó hacia las seis de la tarde: los españoles tuvieron 2.000 muertos y fueron hechos prisioneros unos 3.000 hombres. Perdieron toda la artillería, parque y servicios logísticos, además de numeroso armamento. El ejército patriota sufrió la pérdida de 1.000 hombres, entre muertos y heridos. La batalla se ejecutó como una típica acción de aniquilamiento.
Podemos afirmar que el triunfo patriota de Maipú consolidó la independencia de Chile, contribuyendo, en gran medida, a asegurar la futura expedición sobre el Perú y a hacer posible la acción vigorosa de Bolívar en Colombia y Venezuela. Expuso, claramente, el genio de San Martín y demostró su capacidad de recuperación después de Cancha Rayada.