London Welsh hold a 19-point advantage over Bristol going into next week's Championship final second leg.
Welsh led 17-5 at the break with tries from Nathan Trevett and Nick Scott plus a penalty from Gordon Ross cancelling out Marco Mama's early try.
Carl Kirwan bundled over for another Welsh try and Ross sent over his third conversion to stretch the lead.
Welsh had further opportunities to cross while Ross and Adrian Jarvis traded late penalties.
The Oxford-based side are looking for an instant return to the Premiership following relegation last season. They finished second in the Championship table this term, eight points behind Bristol, who dropped out of the Premiership at the end of the 2008-09 season.
It is only the second time Bristol have reached the Championship final since then and they made the perfect start at the Kassam Stadium.
They immediately showed their intention to take the game to their opponents by sending a kickable penalty to the corner, and the gamble paid off with Mama bundling over from close range after the resulting line-out had been driven to the Welsh line.
Welsh responded well, though, and were soon back in the game.
Ross sent a penalty within range of the posts to the corner and Trevett finished off a driving maul by bundling over. Welsh's outside-half added the conversion and five minutes later the hosts were in front.
The Exiles made light of the torrential rain with Nathan Morris showing great handling to release Scott who raced away from his own half to cross for their second try.
Ross converted and there was worse to come for Bristol who lost captain Ryan Jones to what looked like a serious leg injury, the Welsh international departing on a stretcher.
A penalty from Ross sent Welsh into half-time with a 12-point advantage.
Welsh's forwards again showed their strength to help Kirwan bundle over from another driven line-out in the Bristol corner and Ross's conversion made it 24-5.
Scott had a great opportunity to add to the lead but fumbled in the corner with the line at his mercy before Bristol had Nick Koster sin-binned with 12 minutes remaining for holding on to the ball on his own try line, Ross sending over the penalty to stretch their advantage.
But Jarvis reduced the deficit with a late penalty to give them some hope going into next Wednesday's game at the Memorial Stadium.
London Welsh coach Justin Burnell: "We know Bristol are very capable of scoring a lot of points.
"It will be a test of their attack against our defence so there is still a long way to go.
"We should be going there 26 or 27 points in front. I'm disappointed we didn't kill them off as Nick Scott butchered a late chance when I thought he was under the posts."
Bristol head coach Andy Robinson: "I'm disappointed but London Welsh played really well.
"It's only 19 points and at one stage it looked like it could be a lot worse but we stemmed the tide.
"They played the conditions really well. It's a huge challenge.
"It's a bad performance and it's being able to bring your A game to this stage and we didn't.
"London Welsh had the right tactics in these conditions and fair play to them. We are under big pressure now."
London Welsh: Stegmann; Crane, May (capt), Jewell, Scott; Ross, Cook; Trevett, Morris, Edwards, Spencer, Corker, Browne, Kirwan, Browne.
Replacements: Vella, Bristow, Tideswell, West, Thorpe, Lewis, Awcock.
Bristol: Wallace; Watkins, Tovey, Mosses, Short; Robinson, Baldwin; Traynor, Johnston, Hobson, Glynn, Townson, Koster, Mama, Jones (capt).
Replacements: Lawrence, Hall, Eadie, Skirving, Tipuna, Jarvis, Hughes.