Percy Montgomery's conversion of Adam Black's last-ditch try gave the Dragons a narrow home victory in a tough Celtic League encounter.
Dragons (6) 20
Tries: Black, Forster.
Cons: Montgomery 2.
Pens: Montgomery 2.
Celtic Warriors (6) 18
Pens: N Jenkins 6.
The Warriors led for most of the match at Rodney Parade despite playing with 14 men, after flanker Maama Molitika was sent off in the 69th minute.
Neil Jenkins scored all the visitors' points, kicking six penalties.
The Dragons kept in touch with a Jason Forster try and Montgomery's kicking, before Black forced his way over.
The first half was disrupted by a succession of off-the-ball incidents and brawls, with both sides as guilty as the other.
Referee Alan Lewis eventually had enough and sin-binned opposing props Black and Phil Booth, with Warriors lock Nathan Budgett following them into the sin-bin minutes later.
The tackling of both sides was ferocious and the only scores of the half were two penalties apiece for Warriors fly-half Jenkins and Dragons centre Montgomery.
Jenkins nosed the 13-man Warriors in front with a penalty, before the Dragons hit back when Gareth Baber charged down Kevin Morgan's kick for Forster to get the first try of the game.
Three more Jenkins penalties put the Warriors 18-13 ahead, but the dismissal of Molitika was the turning point.
The referee had issued a final warning that he would stand for no more nonsense, but Molitika threw another punch and got his marching orders.
The Dragons mounted a last desperate attack in the final minute and Black eventually forced his way over after a succession of rucks near the Warriors line.
It was left to former Springbok Montgomery to kick the crucial conversion.
It was no great advert for Celtic League rugby, but the 4,366 spectators got their money's worth from an always intense encounter.
Dragons: Tuipulotu, Brew, Montgomery, Marinos (capt), Luscombe, Warlow, Baber, Snow, S Jones, Black, Gough, Sidoli, Beattie, Forster, Skinstad.
Replacements: Brown, Thomas, Edwards, Ringer, R Jones, Jarvis, Breeze.
Warriors: Morgan, Wyatt, D James, Bryant, Mustoe, N Jenkins, John; Booth, Rees, Horsman, D Jones, Budgett, Molitika, Harris, Parks.
Replacements: Balshen, M Jones, Bryan, R Jones, Kelly,
Martens, S. James.
Referee: A Lewis (IRFU).