The hosts held a slender 13-11 lead at the break, with Bristol wing David Lemi responding to Will Hurrell's try.
But second-half scores from Ross McMillan and Ben Glynn put the away side, who finished the season top of the table, in command of the tie.
The two teams play the second leg at Ashton Gate on Wednesday, 25 May.
Bristol, who are taking part in the Championship play-offs for the fifth time in seven seasons, elected to play the first leg away from home after losing in the final in each of the last two campaigns.
They are looking to return to the Premiership for the first time since they were relegated in 2009, when they finished bottom with only two wins from 22 matches.
Andy Robinson's team finished 16 points ahead of second-placed Doncaster in the regular season.
Doncaster: Jarvis, Bulumakau, M. Clark, Hurrell, Lewis, Cusack, Heaney, List, Hunter, Quigley, Challinor, Phelan, Makaafi, Hills, Shaw.
Replacements: Veikoso, Brugnara, W. John, Steadman, Young, Flockhart, Field.
Bristol: Arscott, Varndell, Tovey, Mosses, Lemi, Sheedy, Cliff, O'Connell, McMillan, Perenise, Evans, Glynn, Mama, Lam, J. Phillips.
Replacements: Brooker, Traynor, G. Cortes, Sorenson, Robinson, Roberts, Morgan.
Bristol took a significant step towards promotion to the Premiership with victory at Doncaster in their Championship play-off final first leg.