Derby took the lead three times at Watford as they recorded their second successive Championship victory under new manager Steve McClaren.
Jamie Ward's header put the Rams ahead early in the first half, but Fernando Forestieri equalised within minutes.
Ward's tap-in meant Derby led again at half-time, before Lewis McGugan's superb curled shot levelled the scores.
The hosts dominated much of the second half, but could not stop substitute Connor Sammon slotting home late on.
The match started at pace as Watford's Essaid Belkalem headed wide after being unmarked at a corner, before Ward outjumped Daniel Pudil to head home Craig Bryson's cross.
But the visitors had the lead for only four minutes, as neat interplay between Josh McEachran and McGugan put Forestieri through on goal to delicately chip keeper Lee Grant.
McClaren spent much of the match in the upper reaches of Vicarage Road's semi-demolished East Stand, but descended in time to see his side go ahead by the break.
Bryson robbed Iriney and exchanged passes with Chris Martin before sliding the ball across to Ward for an easy second.
Derby almost extended their lead early in the second half with Ward and Bryson going close, but soon found themselves on the back foot as Watford poured forward.
Former Nottingham Forest man McGugan was the recipient of Derby supporters' catcalls as he twice struck free-kicks over the bar.
But the midfielder silenced them with a fantastic strike, curling the ball in from outside the box after trading passes with Pudil.
The introduction of muscular substitute Sammon helped Derby retain the ball in the opposition half, and he clinched all three points for the Rams when Will Hughes sent him through to slot home.
Watford head coach Gianfranco Zola:
"It is tough to take but we have to blame ourselves. It is not enough to play good football and score two great goals.
"We need to get better in defending.
"To win championships, you have to be able to attack well - as we did - but we need to defend better."
Derby manager Steve McClaren:
"We talked about the changes and it was a decision to make, do we put a defender on and try to stop the flow and try to hang on, or change the system and try to go forward?
"[Assistant manager] Paul Simpson was saying, 'go for it, let's try and get the winner'.
"We decided to do that and he did a great job, Connor - it worked."
Watford 01 Almunia 27 Cassetti 18 Pudil 06 Ekstrand Booked 05 Belkalem Booked 04 Angella 23 Iriney Booked (Murray - 55' ) 10 McGugan 11 Forestieri 20 Fabbrini (Acuña - 76' ) 08 McEachran Substitutes 02 Brown 07 Battocchio 12 Doyley 15 Acuña 16 Murray 28 Smith 30 Bond Derby County 01 Grant 02 Smith Booked 03 Forsyth Booked 14 Eustace Booked 06 Keogh 27 Whitbread (Buxton - 33' ) 04 Bryson 19 Hughes 09 Martin 20 Bennett (Dawkins - 45' ) 10 Ward (Sammon - 75' ) Substitutes 12 Jacobs 17 Freeman 18 Sammon 24 Morch 25 Buxton 29 Lowe 32 Dawkins
Ref: James Linington