Santa Cruz buscaba forzar la paz aprovechando su situación ventajosa, pero Bulnes sabía que el regreso a Chile «solo con la paz» era inaceptable a la luz de los sucesos de la primera expedición liderada por Manuel Blanco Encalada, quien, sin haber trabado combate, firmó el Tratado de Paucarpata, que mantenía la paz y el statu quo.
Ambos ejércitos, deciden dirimir una situación que se prolonga demasiado, y en la madrugada del 20 de enero el ejército restaurador pone en marcha desde San Miguel hacia Yungay las cuatro divisiones que incluyen infantería, caballería y artillería.
Santa Cruz envía al general Anselmo Quiroz con 600 soldados a las cumbres del cerro Pan de Azúcar, desde donde puede dominar todo el terreno.
Santa Cruz envía al batallón Ayacucho, que sube el Punyán y para sostener las posiciones allí manda luego tres compañías más a órdenes del coronel Eusebio Guilarte Vera.
Las compañías confederadas del coronel Guilarte abandonan la batalla por la derecha retrocediendo sin dar un disparo.
Las tropas confederadas de Quiroz hacen fuego nutrido y ruedan peñascos cuesta a bajo.
En las tropas restauradoras caen muertos el comandante Valenzuela, y luego el mayor Andrés Olivares, quien le había sucedido en el mando.
Para sostener a las tropas confederadas en el cerro Pan de Azúcar, Santa Cruz envía al batallón Loa dividido en dos compañías, una al mando del coronel Feliciano Deheza y otra del coronel Manuel Isidoro Belzu futuro presidente de Bolivia.
El Loa atraviesa el barranco del río Áncash y allí se enfrenta a otras tropas restauradoras enviadas por Bulnes.
Para las 10 de la mañana, la compañía del batallón Carampangue ya no tiene más jefe que una sargento segundo, llamada Candelaria Pérez.
Bulnes para contar con una mejor visión del campo de batalla, se acerca a la hacienda Punyán, la cual ocupa sin resistencia.
Bulnes envía contra el Loa al batallón Colchagua de Urriola, quienes ocultados bajo alta vegetación los dejan acercarse hasta dispararle una descarga, lo que tiende un tercio del regimiento boliviano.
[18] Los soldados del Portales persiguen a los confederados pasando la quebrada y llegando hasta sus defensas, pero tienen que retroceder por la superioridad numérica en las defensas confederadas de Herrera, por lo cual retornan atrás de la quebrada.
La batalla se hace general, los restauradores a campo abierto, y los confederados tras sus trincheras.
La artillería confederada se atacaba desde el medio de su línea al mando del coronel Pareja.
Dando por segura la derrota de los restauradores, la caballería del general Pérez de Urdininea, parte a cortar a los batallones en retirada, y la infantería confederada deja sus parapetos para atacarlos en campo abierto.
Ante la carga de Santa Cruz, existen dos versiones diferentes, una peruana y otra chilena.
La historiografía chilena indica que, ante la carga de Santa Cruz y la retirada de los restauradores, Bulnes tomó el mando del batallón Valparaíso y cruzó la quebrada del río Ancash para apoyar al Portales.
Con una nueva carga con los cinco escuadrones de caballería, Baquedano hizo retirar a los confederados agrupándose con su infantería.
Según la historiografía peruana, ante la carga confederada y la retirada de los batallones restauradores el comandante Bulnes ordenó la retirada del ejército restaurador, pero el general Ramón Castilla se opuso a esta orden exclamando la frase: «No hemos venido a correr».
[19] Según la versión publicada tres veces por el historiador y periodista peruano Juan Gualberto Valdivia, basada en el propio testimonio del general, aceptada por Mariano Felipe Paz Soldán y acogida por Nemesio Vargas, Castilla exclamó lo siguiente:
[25] Gamarra envió una carta de felicitación al presidente Joaquín Prieto, agradeciendo su apoyo y reconociendo el accionar del ejército chileno.