Rovers went in front thanks to John Marquis’s fifth-minute header during an open first half.
They were pegged back by an Andrew Hughes header as Championship side Preston started the second period strongly.
But Tom Anderson scrambled the ball home with 18 minutes to got to put the visitors in control and sealed the win when Mallik Wilks slotted home in the 87th minute.
“I thought we were outstanding. I’m particularly proud of the response after we conceded,” McCann said. “We stayed mentally strong and re-established control. From that goal we were again the better team and the team who looked most likely to win.
“I have to praise the defence. They allowed our front six to go out and express themselves. Preston showed us respect by naming almost the same team they had in the league last time out.
“I told the players before the game to go and show that they can compete at this level and I think they’ve done that.
“It is a great feeling to be in the fourth round, it has been a long time since the club got so far. We are all excited to see who we will get drawn against.”
Daniel Johnson fired over the bar after Hughes picked him out on five minutes at Deepdale.
But Rovers were ahead seconds later when Marquis headed home from six yards out after Matty Blair beat his man for pace.
Wilks went close with a ninth-minute effort after a swift counter-attack from the visitors but Ian Lawlor beat away Hughes’s powerful volley a minute later at the other end as the open start continued.
Graham Burke alertly cleared a Marquis header off the line after Rovers won their first corner on 14 minutes.
Burke fired narrowly wide with a snapshot four minutes later, before Wilks also went close at the other end.
Ryan Ledson failed to hit the target after latching on to a Lawlor punch on 27 minutes, before Lawlor then reacted well to clear the danger after a Hughes cross deflected off Ben Whiteman.
Preston came even closer on the stroke of half-time when a powerful Hughes shot smacked back off the post.
Wilks hit the side-netting two minutes after the restart when he rounded the keeper after pouncing on a loose ball.
Lukas Nmecha fired over from 25 yards a minute later, before Wilks blazed over from long range shortly after.
Hughes levelled for North End after 55 minutes, heading home at the back post from Paul Gallagher’s corner. Darnell Fisher had a shot palmed away by Lawlor before Johnson’s effort was blocked by Andy Butler as Preston increased the pressure.
Rovers substitute James Coppinger curled a shot narrowly wide on 69 minutes, before having a shot saved a minute later.
The pressure paid off when Anderson rifled home from close range after Preston failed to deal with a Butler header on 72 minutes.
Wilks wrapped it up with three minutes left when he took advantage of a defensive miscommunication between Jordan Storey and goalkeeper Michael Crowe.
Preston North End: Crowe, Fisher, Huntington, Storey, Hughes, Gallagher, Ledson (Barker 60), Barkhuizen, Johnson, Burke (Browne 46), Nmecha (Maguire 74).Unused substitutes: Rudd, Earl, Clarke, Woods.
Doncaster Rovers: Lawlor, Blair, Tom Anderson, Butler, Andrew, Crawford (Rowe 85), Whiteman, Kane, Wilks (Sadlier 90), Marquis, May (Coppinger 64). Unused substitutes: Lewis, Marosi, Horton, Greaves.
Referee: A Davies (Hampshire).