John Marquis gave Doncaster the ideal start in the second minute when he slotted in a penalty after Mallik Wilks had been brought down by George Dobson.
Wilks got in on the act two minutes later, smashing in from the corner of the area after cutting in from the right.
Walsall – arguably the stronger side in the first half – pulled a goal back after 13 minutes when Josh Gordon hooked in from close range but home nerves were calmed after 39 minutes when Danny Andrew drilled in a free-kick from 20 yards.
Rovers goalkeeper Marko Marosi saved from Corey Blackett-Taylor, Zeli Ismail and Gordon after the break and Paul Downing and Rowe went close for Doncaster.
“We’ve done this quite a few times this season at home, scoring quite early, and it helps us,” said Rovers chief Grant McCann.
“It gives us a big advantage. The boys love playing here and we’re confident we can beat anyone here and we’ve shown that this season.
“I thought it was a professional performance overall. I was pleased we scored two early goals. For 10 or 15 minutes after that, we were a bit sloppy and lacked a bit of composure. We probably lacked a bit in our reactions to losing the ball, we were a bit slow with that. But we got them together at half-time and I was pleased with them in the second half.”
Doncaster Rovers: Marosi, Blair, Downing, Butler, Andrew, Coppinger (Hasani 81), Crawford, Rowe, Wilks (May 87), Marquis, Sadlier (Smith 64). Unused substitutes: Anderson, Beestin, Jones, Lewis.
Walsall: Liam Roberts, Devlin, Guthrie, Scarr, Leahy, Dobson, Osbourne (Cook 52), Kinsella, Ismail (Ferrier 68), Gordon, Blackett-Taylor (Oteh 83). Unused substitutes: Edwards, Fitzwater, Norman, Slinn.
Referee: G Salisbury (Lancashire).