V roku 1846, na začiatku americko-mexickej vojny, bol Roberts znovu vymenovaný za prvého poručíka v armáde. V roku 1847 bol povýšený na kapitána a videl akciu v Veracruze, Cerro Gordo, Contreras, Churubusco
, a zachytenie Mexico City, Matamoros a Galajara priechodu. V Churubuscu získal titul majora za vedenie predvojovej skupiny útočníkov. V roku 1847 získal ďalšie povýšenie na podplukovníka za statočnosť počas vojny. Po skončení bojov slúžil na hraniciach a vo Washingtone.