In 1846, aan het begin van de Mexicaans-Amerikaanse Oorlog, werd Roberts herbenoemd tot eerste luitenant in het reguliere leger. Hij werd gepromoveerd tot kapitein in 1847, en zag actie in Veracruz, Cerro Gordo, Contreras, Churubusco
, en de verovering van Mexico City, Matamoros en de Galajara pas. Bij Churubusco werd hij majoor voor het leiden van een voorhoede van stormers. Hij ontving nog een brevet, tot luitenant-kolonel in 1847 voor dapperheid tijdens de oorlog. Na het einde van de vijandelijkheden, diende hij aan de grens en in Washington, D.C.