Rovers survived a scare as they let a 3-0 half-time lead slip away before coming through 4-3.
“The goals we conceded were disappointing,” admitted Ferguson, whose side head to third-placed Plymouth on Saturday.
“It’s a really disappointed dressing room. We’ve gone top of the league and it shouldn’t be like that. We rode our luck at times but three points is three points.
“Winning 3-0 would have sent a message out to our rivals. The own goal to go 4-2 up won us the game because they had all the momentum.”
Ferguson named an unchanged starting line-up for a third successive game.
Butler opened the scoring in the 27th minute as he headed home James Coppinger’s free-kick. Mandeville smashed home his sixth in as many outings before a superb volley from Blair seemingly put the game to bed by half-time.
Just after the hour mark the hosts clawed one back as substitute Tom Pett celebrated his birthday in style with a goal.
Fraser Franks fired in a volley with 18 minutes left before John Marquis’s header deflected off goalkeeper Jamie Jones to restore a two-goal cushion.
Late on Rowan Liburd poked home from close range before Ferguson’s men were forced to defend for their lives, including a goal-line scramble.
Stevenage: Jones, Henry, King, Franks, Wells, Gorman (Pett 46), Schumacher (Liburd 70), Lee (Tonge 46), Cowans, McKirdy, Kennedy. Unused substitutes: Slater, Day, Kerr, Wilmot.
Doncaster Rovers: Marosi, Alcock, Butler, Baudry, Mason, Blair, Houghton, Coppinger (Williams 84), Mandeville (Keegan 73), Rowe, Marquis. Unused substitutes: Calder, Wright, Beestin, Evina, Jones.
Referee: L Collins (Surrey).
Man of the match: James Coppinger.