Connacht's inconsistent form struck again as the Dragons chalked up their first win at the Sportsground since May 2004.
Following last week's narrow defeat against Leinster, Dean Ryan’s men deservedly ended a run of six straight defeats, with flanker Taine Basham excelling.
Although Dragons full-back Jonah Holmes scored the only try of the first half, four penalties from Jack Carty had Connacht 12-8 ahead at the break.
However, the Welsh side were clinical after that, with Jordan Williams, Mesake Doge and Holmes again all crossing. Influential fly-half Sam Davies booted 15 points.
Connacht replied with tries from Mack Hansen and Conor Fitzgerald, but there was no denying Dragons their first victory since April.
An offside call against Rhodri Williams allowed Carty to kick Connacht ahead in the third minute. The Athlone man missed a second attempt but was back on target in the 14th minute.
Davies soon got the Dragons off the mark and neither tryline was troubled until the all-action Basham was stopped short from a maul.
With 27 minutes gone, full-back Williams brilliantly collected his own chip kick on the bounce and put Holmes reaching over in the right corner. Davies narrowly missed the conversion.
The visitors then lost lock Will Rowlands to the sin bin for not rolling away. Carty mopped up with the three points and soon fired over from a similar 35-metre range for 12-8.
Nonetheless, the Dragons silenced the home crowd with three tries in 18 second-half minutes. Full-back Williams beat three defenders for a terrific 47th-minute try, converted by Davies.
Profiting from Jack Dixon’s initial turnover, Fijian prop Doge burrowed over for Davies to convert.
Suddenly, Connacht found themselves trailing 22-12. Carty swung the ball wide for Hansen to duck inside three tackles and make the line. The out-half missed the conversion.
His opposite number Davies kept the Dragons on course, knocking over a penalty before threading a kick through for Holmes to complete his brace.
Davies’ reliable left boot clipped over the conversion and a final penalty, that last kick coming after Connacht’s Sam Arnold had sent fellow replacement Fitzgerald over out wide.