Doncaster stretched their unbeaten run to 13 games as they stayed on course for a second successive promotion. But in a match of bubbling passion each side finished a man short.
Doncaster's Adebayo Akinfenwa and home defender Kevin Austin were sent off and Bristol's acting joint manager Russell Osman was banished from the touchline.
It all blew up just after the hour when Osman, a one time England international, was reported to referee Brian Curson for arguing with the fourth official.
That had hardly subsided when a tussle for possession on the edge of the home box ended with a dozen players pushing and shoving and the two main culprits throwing punches at each other.
Only mintues earlier Akinfenwa had put Doncaster back in front with a superb header.
After a first half which had seen Bristol on top all three goals came in a little over ten minutes.
Kevin Miller in the home goal must have been feeling pleased with the way he dived to block a shot from Gregg Blundell in a 51st minute raid.
The ball though fell to Ricky Ravenhill as he ran across the box and slammed his return well out of the keeper's reach.
To go a goal behind was tough on Bristol but they were soon level when Junior Agogo squeezed in a free kick from Gary Twigg at the far post.
Doncaster were complaining play should have been stopped because they had a player down injured at the other end of the field.
For his protests Blundell was booked and an angry atmosphere took over.
That seemed academic though when Akinfenwa got on the end of Dave Mulligan's cross to put his side back in front.
Doncaster thrashed their rival Rovers 5-1 in October but were up against a much more determined side this time.
Six new players had seen Bristol put on back to back wins for temporary bosses Osman/Kevan Broadhurst.
As they pressured the Yorkshire side it took Doncaster a long time to pick up a rhythm.
They finally did so through the play of their beefy midfielder John Doolan.
Finally they were thanking keeper Andy Warrington for keeping all three points as he made saves at the end from sub Bo Henriksen and Agogo.