Roberts saved well from James Henry 10 yards out after 25 minutes then, two minutes later, made a stunning one-handed reflex stop to foil Wes Thomas’ bullet near-post header.
Against the run of play, Walsall took the lead after 33 minutes as Luke Leahy drilled across the six-yard box for Amadou Bakayoko to bundle home.
Walsall doubled their lead after 48 minutes as Erhun Oztumer latched on to Leahy’s long ball and chipped U’s keeper Simon Eastwood, who got a touch but could not keep it out.
United were back in it on 70 minutes as Alex Mowatt curled home a fine free-kick from just outside the box.
But Roberts made a brave save to stop Jon Obika rounding him when clean through and a fantastic flying stop to flick Henry’s 25-yard thunderbolt away from the top corner.
Agon Mehmeti could still have rescued Oxford a point but he steered into the side netting from six yards in stoppage time.
Pedro stepped off the bench to send Chelsea into the FA Cup semi-finals after they beat Leicester 2-1 at the King Power Stadium on Sunday evening.
RB Leipzig came from behind at the Red Bull Arena to end a run of four winless games and defeat Bundesliga leaders Bayern Munich 2-1 on Sunday.