Billy Sharp fired home a stoppage-time winner as Doncaster Rovers gave their survival hopes another huge boost by seeing off 10-man Watford.
After the early dismissal of Hornets striker Mathias Ranegie, Chris Brown headed Rovers in front after 24 minutes.
But Watford were left seething as Rovers goalkeeper Sam Johnstone failed to see red or concede a penalty despite hauling down Troy Deeney just before the break.
The visitors shrugged off that setback to equalise though Ikechi Anya, and just as it looked like they had done enough to earn a point, up popped Sharp to send the home fans into ecstasy.
After an uninspiring opening, the first shot after 16 minutes required Johnstone to dive low to his left to keep out an effort from Alexander Merkel.
But the game turned on its head two minutes later as Watford were reduced to 10 men with Ranegie being shown a straight red by referee Chris Sarginson for kicking out at James Husband.
Husband tackled the big Swede down Rovers’ left flank and after Husband appeared to pat the big forward on the head, Rangie responded with a swift kick in the full-back’s direction, leaving Sarginson with no choice.
The one-man advantage paid dividends just five minutes later as James Coppinger swung over a cross which was headed home by Brown at the near post.
David Cotterill then sent an effort just wide of Jonathan Bond’s left-hand upright as Rovers started to crank up the pressure.
Five minutes before the break Watford should have been back in it, but Johnstone failed to concede even a free-kick as he rugby-tackled Deeney in his own box as the Hornets striker latched on to a sloppy backpass.
Watford drew level on the counter-attack after 67 minutes, with Forestieri finding Anya, who slammed the ball into the bottom left-hand corner. But as the game entered its final embers, Sharp pounced to score the winner.
Doncaster Rovers: Johnstone, Quinn, Meite (McCullough 46), Husband, Duffy, Keegan, Coppinger, Wellens, Cotterill, Brown, Sharp. Unused substitutes: Furman, Maxted, De Val Fernandez, Robinson, Stevens, Bowery.
Watford: Bond, Doyley, Cassetti, Angella, Anya, Tozser, Battocchio (Faraoni 88), Merkel (Forestieri 59), Pudil, Deeney, Ranegie. Unused substitutes: Belkalem, McGugan, Woods, Neill, Hoban.
Referee: C Sarginson (Staffordshire).