The Ospreys had led through a Shaun Connor try after only four minutes but the home side bounced back with converted tries by Ian Gough and Michael Owen as the home side built a 14-11 interval lead after Adrian Cashmore had kicked two penalties for the vistors.
Cashmore levelled things up with a second penalty early in the second half but The Dragons were ahead again, though, within 10 minutes.
Connor tried to launch an Ospreys attack deep in his own half, but Graham Chapman intercepted his long pass and raced clear to score in the right corner. Replacement Craig Warlow added the conversion.
Seconds later, the Dragons were denied a fourth try by Adam Jones’ last-ditch tackle on home captain Jason Forster.
Warlow’s excellent long-range penalty eight minutes from time took the Dragons two scores clear, and the Ospreys never looked like clawing their way back in the remaining minutes.