Byron Harrison gave the Robins the lead in the eighth minute, following up from close range after Ryan Clarke parried Terry Gornell's low shot.
Cheltenham dominated the first half an hour, with Clarke having to reach low to his left to deny Matt Richards.
Oxford's first effort on target was a header from Johnny Mullins which was turned over the bar by Scott Brown but they were gifted a leveller in the 34th minute when Steve Elliott tried to nod Clarke's long clearance back to Brown, but he made a mess of it, presenting Dave Kitson with a simple tap-in.
Keith Lowe crashed a header against the post from David Noble's corner as the first half ended 1-1.
Cheltenham regained the lead five minutes into the second half when Sido Jombati's cross was not dealt with, Harrison's effort was blocked and Gornell tapped in.
Mullins made it 2-2 when David Hunt's cross was headed clear to him near the penalty spot and he stroked a fine shot inside the bottom left corner as honours finished even.