Ulster overturned a 16-0 deficit at Rodney Parade to maintain their 100% record at the top of the Celtic League.
Dragons (9) 19
Pens: Warlow (3)
Ulster (0) 22
Tries: Trimble, N Best (2)
Cons: Wallace (2)
Craig Warlow's boot and an Ian Gough try gave the Dragons their advantage early in the second half.
But the home side went to sleep, and fine tries from Andrew Trimble and Neil Best got Ulster in touching distance.
Paddy Wallace and Warlow exchanged penalties, but with 13 minutes to go Best's second try from a short-range line-out sent the Irish home happy.
Ulster were missing the direction of David Humphreys early on, Adam Larkin a late replacement for the veteran fly-half.
The determined and disciplined Dragons - playing their first home game of the season and eager to end a two-game losing run - gave the visitors no openings and kept the scoreboard ticking remorselessly.
Number 10 Warlow opened the scoring with an early drop goal, then added a 22nd-minute penalty.
Ulster's frustration grew and Matt McCullough was sin binned soon after.
A second Warlow penalty stretched the gap to nine at the break, and the onslaught soon continued.
Jon Bryant was hauled down yards from the line, but the centre popped the ball to Gough out of the tackle and the lock was awarded a controversial touchdown.
That was the cue for the home side to relax and from the restart Larkin took advantage, hitting a gap before sending centre Trimble on a clear 30m run to the line.
More scrappy play followed and Ulster seized the opportunity to open up the game, swinging play from one side of the pitch to the other before freeing flanker Best for a try wide on the left.
Warlow and Wallace swapped kicks, but the visitors were getting the better of territory and possession as the Dragons conceded a series of penalties in their own half.
Ulster went for the corner, and from a five-metre line-out Best peeled to the blindside for the decisive score.
Dragons coach Paul Turner:
"I'm bitterly disappointed, at 16-0 up we fell asleep and they showed what a strong team they are.
"Ulster controlled territory better in the second half. We could have snatched it at the end but their defence was too good.
"We just have to take it on the chin, lick our wounds and look to Leicester next week."
Ulster coach Mark McCall:
"I'm so proud of the players, to win after being 16-0 down at a place like Rodney Parade is a heck of a comeback.
"It was disappointing to be that far behind, but the character shown in that second-half performance was wonderful."
Dragons: Morgan, Wyatt, Luscombe, Bryant, Hinton, Warlow, Baber, Black, Jones, R. Thomas, Gough, Charteris, Ringer, Bryan, Forster.
Replacements: Tuipulotu for Hinton (69), Brown for Jones (40), Sidoli for Gough (65), Hall for Ringer (53). Not Used: Maddocks, Oakley, A. Thomas.
Ulster: Wallace, Bowe, Trimble, Maggs, Topping, Larkin, Campbell, J. Fitzpatrick, R. Best, S. Best, Harrison, McCullough, N. Best, Wilson, McMillan.
Replacements: Howe for Topping (64), B. Young for J. Fitzpatrick (71). Not Used: Shields, Frost, Feather, Spee, Stewart.
Referee: Malcolm Changleng (SRU)