During the Battle of Monterrey on September 21-24, 1846, Duncan's battery was assigned to Thomas Staniford's brigade in William J. Worth's division. Taylor attacked the city from the north, while sending Worth's troops to attack from the west. The batteries of Duncan and William W. Mackall were involved in the capture of the Bishop's Palace on September 22. Duncan was breveted colonel for "gallant and meritorious conduct" at Monterrey. In early January 1847, Taylor was ordered to transfer Worth's and Twiggs's divisions and two batteries, including Duncan's, to the army of Winfield Scott. Duncan fought at the Siege of Veracruz on March 9–29, 1847, at the Battle of Cerro Gordo on April 17–18, and at a skirmish in Amazoque on May 14.