Bath (8) 15 Tries: James, Hooper Con: James Pen: James
Colin Charvis smashes through the tackle of Nick Abendanon
Stuart Hooper's winning try sent Bath to the top of Pool Five as they set up a mouth-watering winner-takes-all clash with Toulouse on next Sunday.
Bath had led 8-0 at the break thanks to Joe Maddock's early try but poor discipline set in and they had Hooper and Daniel Browne sin-binned.
The Dragons hit back with tries from Richard Fussell and Wayne Evans to give the Welsh region a 12-8 lead.
But Hooper powered over from close range as Bath edged a narrow victory.
They are now a point ahead of Toulouse and know that victory at The Rec over the French aristocrats, who suffered a shock home defeat by Glasgow on Saturday, will send them through as pool winners.
Defeat with a bonus point or two could still leave them in contention for one of the two best runners-up spots, but Bath have their fate in their own hands.
They made an early breakthrough with Maddock going over in the corner after an initial tap penalty from Michael Claasens, and some superb off-loading in contact by the visiting forwards created a gap for the winger to dive through.
The visiting side continued to put pressure on the Dragons but were denied on several occasions by a combination of erratic passing and poor discipline at decisive moments.
The Dragons, only playing for pride, were relying on scraps and although they looked dangerous in flashes they struggled to assert themselves.
In times of pressure Bath always had the experience of Butch James to drive them forward and the South African World Cup winner kicked them into an 8-0 lead with a penalty.
That score should have increased by a further three points after Dragons skipper Luke Charteris was penalised and sin-binned for slowing the ball down on the floor.
But James elected for a quick tap instead of a straightforward kick and the chance was lost.
Bath's discipline deserted them in the final stages of the half with Justin Harrison lucky not to see yellow, but Hooper was less fortunate and on the stroke of half-time he was sent to the bin.
After the break Browne became the second Bath player to see yellow after he tackled Evans high and late.
Soon after Fussell got the Dragons back in the game, scoring their first try after beating the Bath defence to a clever kick from Arlidge, who converted to make it 7-8.
Ashley Smith's fine break almost resulted in a second try for the Welsh region but his final pass was poor and the chance was lost.
But Bath's tendency to self-destruct continued and on the hour Evans touched down in the corner after the visiting side failed to clear their lines in their own corner.
Just as the Dragons thought they may be heading for a famous victory, Alex Crockett cut through their midfield with 14 minutes left before off-loading to Hooper, who powered through for Bath's second try.
James converted and Bath held on to claim a vital victory.
Bath head coach Steve Meehan: "We have all earned our pay this week again, this is not an easy place to come and play.
"The Dragons were a really spirited side and play well for one another.
"Our match next week is a case of winner takes all and I am sure the players will be excited about it and the city of Bath will be looking forward to Toulouse arriving.
"Let's hope it is a good, open, quick match and we win."
Dragons head coach Paul Turner said: "It's frustrating. I really feel for the players.
"We have muscled up with probably the best side in England and we have probably deserved to win one of them (Dragons lost the reverse fixture 13-9) and we could have done that today.
"It was all going according to plan for us (at 12-8) and we got ourselves into the right areas and put their back three under pressure.
"But then we got soft with a couple of tackles but, even at the death, we could have dropped the goal to draw. A lot of good things happened today."
Newport-Gwent D'gons: Tovey, Wyatt, Gomer-Davies, Smith, Fussell, Arlidge, Evans, Black, S Jones, R Thomas, A Jones, Charteris, MacDonald, Charvis, Webb. Replacements: Maule for Tovey (67), Willis for S. Jones (55), Ringer for Charvis (64), L. Evans for Webb (57). Not Used: Robinson, R. Lewis, Dolman.
Sin Bin: Charteris (28).
Bath: Abendanon, Maddock, Crockett, Fuimaono-Sapolu, Banahan, James, Claassens, Flatman, Mears, Stevens, Harrison, Hooper, Beattie, Scaysbrook, Browne. Replacements: Hape for Fuimaono-Sapolu (14), Dixon for Mears (62), Bell for Stevens (62), Cuthbert for Beattie (67), Bemand for Browne (67). Not Used: Faamatuainu, Goodman.
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.