Nel 1846, all'inizio della guerra messicano-americana, Roberts fu nuovamente nominato tenente, fucili a cavallo, nell'esercito regolare. Fu promosso capitano nel 1847 e combatté a Veracruz, Cerro Gordo, Contreras, Churubusco
, e la cattura di Città del Messico, Matamoros e il passo Galajara. A Churubusco, è stato brevettato maggiore per aver guidato un gruppo avanzato di assaltanti. Ricevette un ulteriore brevetto, al tenente colonnello nel 1847 per la galanteria durante la guerra. Dopo la fine delle ostilità, ha servito alla frontiera e a Washington, D.C.