Gareth Wyatt scored an eighth-minute try for the Dragons
Dragons: (10) 17
Tries: Wyatt, Emerick
Cons: Sweeney (2)
Bristol: (6) 11
Newport Gwent Dragons displaced Bristol as European Challenge Cup Pool One leaders with a hard-fought home win.
A Ceri Sweeney cross-kick created an early try for Gareth Wyatt, with David Hill landing two penalties for Bristol either side of a Sweeney penalty.
Bristol took an 11-10 lead shortly after the break when Lee Robinson scored a carbon copy of Wyatt's try.
But the Dragons hit straight back to secure victory with a Paul Emerick try, Sweeney, again the creator, converting.
Fly-half Sweeney missed a golden opportunity to deny Bristol what could prove to be a precious losing bonus point when he missed a late penalty.
The Dragons' victory takes them level on 20 points with Bristol, but the Welsh side take top spot after scoring one more try than the English league leaders in the two games between the sides.
A bonus-point victory for the Dragons against bottom side Bayonne in France next Friday will take Paul Turner's side into the quarter-finals.
And Bristol should also qualify for the knock-out stage as one of the three best runners-up if they beat Romanian side Bucuresti on Friday.
Dragons boss Paul Turner:
"It was another gutsy performance. It's a pity we couldn't take the bonus point away from them, which means we've got to go to Bayonne next week and get a bonus-point win.
"But we've beaten the leaders of the Guinness Premiership. We've always said that Bristol on paper are well beatable, but not many sides beat them.
"We've done that and you can't take that away from this set of boys."
Bristol coach Richard Hill:
"Both sides almost cancelled each other out with the way they play. There was great spirit and effort from both sides.
"You could see the Dragons really wanted to win. All credit to them, they showed great spirit and had to defend very strongly at times.
"They stopped us getting any momentum, very few occasions we made a half break to get in behind them. You have to take your hat off to them."
Dragons: K Morgan (capt); G Wyatt, P Emerick, A Smith, A Brew; C Sweeney, A Walker (G Baber 65); A Black, K Crawford (R Wilkes 40), L Harrison, I Gough, P Sidoli, A Hall (Owen 61), J Ringer, C Charvis.
Replacements: R Wilkes, D Maddocks, M Owen, N Fitsemanu, G Baber, M Hercus, A Thomas.
Bristol: C Morgan; L Robinson, S Cox, J Taumalolo (W Pozzebon 40), D Lemi; D Hill, B O'Riordan; D Hilton, M Regan, D Crompton, R Winters (M Sambucetti 65), G Llewellyn, A To'oala (C Short 78), M Salter (capt), D Ward-Smith.
Replacements: S Nelson, W Thompson, M Sambucetti, C Short, G Nicholls, J Strange, W Pozzebon.
Referee: Romain Poite (Fra).