Han blev forfremmet til midlertidig major efter Slaget ved Cerro Gordo den 18. april 1847. Han kæmpede også i Slaget ved Contreras, Slaget ved Churubusco og Slaget ved Chapultepec, og blev såret i det sidste. Ved krigens slutning var han foreløbigt forfremmet yderligere to gange til oberstløjtnant og oberst, men hans permanente rang var fortsat kaptajn i ingeniørkorpset, og den forblev uforandret, indtil han blev overført til kavaleriet i 1855.