Darren Ferguson's men ended a run of 15 games without a win, coming from a goal down after Will Grigg's 21st league goal of the season in the first half had given the visitors the lead.
However, two headers from Butler in five minutes turned the game on its head before Andy Williams converted a late penalty after David Perkins was sent off.
The victory saw Doncaster close the gap on their immediate rivals Blackpool, who remained in trouble after losing 3-0 to Rochdale.
League One
Yakubu Aiyegbeni returns to English football with Coventry
13/02/2017 AT 14:38
Ashley Eastham and Joe Bunney struck either side of half-time before Nathaniel Mendez-Laing completed the scoring to leave the Tangerines two points adrift of safety, while Keith Hill's men stayed in the play-off hunt.
Burton gained a point on Wigan but missed the chance to put pressure on the leaders after being held to a goalless draw by Barnsley, making it five without a win for Nigel Clough's men.
Jean Akpa-Akpro's late equaliser earned a vital point for Shrewsbury as they continued to battle against relegation.
Jamie Proctor's goal looked to have earned a fifth consecutive win for Bradford before Akpa-Akpro's header put another point between them and Blackpool.
Colchester edged closer towards relegation after a heavy 4-1 defeat at home to Peterborough. Jon Taylor scored early on before George Moncur missed the chance to level from the spot, leaving Posh to capitalise through Andrew Fox and Shaquile Coulthirst. Moncur eventually got on the scoresheet before Marcus Maddison added a fourth.
Fleetwood and Oldham shared the spoils at Highbury Stadium as Stefan Scougall and Liam Kelly's strikes cancelled each other out, leaving both sides looking nervously over their shoulders.
Crewe and Scunthorpe shared a five-goal thriller at Gresty Road, with the visitors triumphing 3-2 over recently relegated Alex.
Oliver Turton opened the scoring before a Luke Williams brace and Hakeeb Adelakun's strike gave the Iron a two-goal lead, only for Marcus Harber to pull one back.
A late Jordy Hiwula header gave Walsall a 1-0 win over Southend to leave them third, while Danny Mayor scored to see Bury beat Swindon by the same scoreline.
Chesterfield remained in relegation trouble after losing 3-0 to Sheffield United. Alex Baptiste opened the scoring before Che Adams stroked into an empty net from 30 yards after a stray clearance, and Billy Sharp added a third.
Ajay Leitch-Smith and Carl Dickinson gave Port Vale a 2-0 win over Gillingham.
Marcus Tudgay scored a winner as Coventry came from behind to beat 10-man Millwall 2-1. Byron Webster gave the visitors the lead before Shaun Williams was shown a straight red following an altercation, but John Fleck and Tudgay struck after the hour to claim three points.
League One
Ched Evans signs for Chesterfield
20/06/2016 AT 13:42
League One
Barnsley back in Championship after beating Millwall in play-off final
29/05/2016 AT 12:54