Striker John Marquis’s 24th goal of a fine season and an own-goal from defender Nico Jones made sure of a battling point on the road.
It leaves Rovers sixth, four points ahead of fellow play-off chasers Peterborough United, who have a game in hand.
Victory in their last league match of the season on Saturday, at home to Coventry City, who are still in the play-off mix, would guarantee a coveted play-off spot.
But if Posh lose at third-placed Portsmouth tomorrow then Rovers will be firmly in the driving seat to challenge for a return to the Championship.
“We showed tremendous character, and we needed to show it because Oxford’s front four are up there with the best in the division,” said McCann. “The wind too was very difficult. Sometimes playing into it was very hard to get the ball under control.
“But my players were calm and determined. They had the attitude that if we couldn’t win the game we weren’t going to lose it.
“My message to the group beforehand was, ‘go out and play with freedom’. They had nothing to lose and everything to gain.”
Marquis headed Doncaster in front on seven minutes from Mallik Wilks’s cross, but the U’s hit back six minutes later when Marcus Browne rifled a shot between goalkeeper Mark Marosi’s legs.
The U’s had two strikes disallowed at the start of the second half before James Henry netted to put them ahead with a clinical finish.
Home debutant central defender Jones then unluckily deflected Andrew Butler’s powerful cross into his own net just after the hour mark as Rovers grabbed a deserved point for their efforts.
McCann also singled out leading scorer Marquis for extra praise after he added to his bulging goal tally.
“I knew John would score,” reflected. “We trained at Cheltenham and each time we’ve done that before he’s scored.
“It was a great header, and he probably could have had one or two more goals.
“What he brings to us is phenomenal.”
Oxford United: Eastwood, Long, Jones, Nelson, Ruffels, Hanson, Brannagan, Whyte (Hall 80), Henry (Sykes 71), Browne, Sinclair (Mackie 86). Unused substitutes: Garbutt, Mousinho, Stevens, Lofthouse.
Doncaster Rovers: Marosi, Blair, Downing. (Anderson 45), Butler, Andrew, Whiteman, Rowe (Sadlier 57), Kane, Wilks, Marquis, Coppinger. Unused substitutes: Crawford, Smith, May, Jones, Lewis.
Referee: C Breakspear.