Rovers failed to get going and fell behind to Matty Taylor’s close-range opener on 19 minutes.
It got even worse when they conceded twice in the last five minutes of the half to give themselves a mountain to climb.
And the second half wasn’t much better for the visitors, with Louis Jones making key saves to keep the score down.
Jones was a relieved man on 10 minutes when Liam Kelly shot weakly with a first-time effort following a poor clearance by the Rovers’ goalkeeper.
Fejiri Okenabirhie had a shot blocked by Elliott Moore after Simoes Inacio picked him out on 11 minutes.
Taylor fired straight at Jones after Olamide Shodipo’s shot was initially blocked on 13 minutes.
But he fired United ahead from close range six minutes later after Cameron Brannagan’s blocked shot fell into his path.
Brannagan had a shot tipped around the post by Jones on 25 minutes after a mix-up between Joe Wright and AJ Greaves allowed him in.
Brannagan blazed over from distance three minutes later, before James Coppinger had a long-range shot deflected for a corner on 30 minutes.
Taylor doubled Oxford’s lead after instinctively tapping in a Josh Ruffels header on 41 minutes.
Shell-shocked Rovers fell further behind when Shodipo fired home after Rovers got caught out at the back on 45 minutes.
Jones did well to keep out Shodipo’s dipping shot on 48 minutes as United came out fast after the break.
Brannagan then had a long shot tipped over by Jones, before the Rovers keeper made a routine save from Kelly on 65 minutes.
Sub Dan Agyei hit the post on 79 minutes, before Taylor Richards had a late shot well saved for Rovers.
Richards then had a shot cleared off the line by Robert Atkinson in stoppage time.
Oxford United: Stevens, Hanson, Moore, Atkinson, Ruffels, Brannagan (Sykes 77), Gorrin, Kelly (Grayson 77), Shodipo (Hall 85), Taylor (Agyei 77), Barker (Lee 60). Unused substitutes: Eastwood, Chambers-Parillon.
Doncaster Rovers: Jones, Halliday, Wright, Anderson, Amos (Horton 63), Smith, Greaves (Gomes 63), Coppinger (Williams 74), Richards, Simoes Inacio (Lokilo 58), Okenabirhie. Unused substitutes: Balcombe, John, Blythe.
Referee: B Toner (Lancashire).
Support The Yorkshire Post and become a subscriber today. Your subscription will help us to continue to bring quality news to the people of Yorkshire. In return, you’ll see fewer ads on site, get free access to our app and receive exclusive members-only offers. Click HERE to subscribe.