Cuando estalló la guerra con México, Morgan fue nombrado coronel de la 2ª Infantería de voluntarios de Ohio. Posteriormente le fue encomendada como coronel la 15.º Infantería de Estados Unidos en marzo de 1847, sirviendo al mando del general Winfield Scott. Para poner fin a la guerra de guerrillas y al asesinato de soldados estadounidenses, el coronel Morgan tomó una serie de prominentes ciudadanos mexicanos y emitió una proclama anunciando que por cada soldado estadounidense muerto por la guerrilla, sería ejecutado un ciudadano. Los asesinatos cesaron inmediatamente. Fue nombrado general de brigada en 1848 por su gallardía en las batallas de Contreras y Batalla de Churubusco, donde fue herido de gravedad. Volvió a Ohio para recuperarse, y recibió el agradecimiento formal de la legislatura de Ohio.