Southampton broke the deadlock on 20 minutes when Shane Long's low cutback was only half-cleared and the ball fell to James Ward-Prowse, who had time to pick his spot and slot into the bottom corner beyond Heurelho Gomes.
The Brazilian goalkeeper was then called into action to claw away Long's looping header, before needing to tip Wesley Hoedt's speculative chip from 45 yards over the top.
On 58 minutes came the Hornets' first goal, Daryl Janmaat seeing his effort tipped onto the bar by McCarthy before the unchallenged Gray followed up by nodding into the net on the rebound.
Southampton regained their composure but were cruelly and unjustly caught out by Watford's equaliser, palmed home by Doucoure just as the game was heading into injury time, with referee Roger East ignoring the visitors' complaints.
WATFORD (4-2-3-1): Gomes; Janmaat, Wague, Kabasele, Zeegelaar; Doucoure, Watson (Deeney 46'); Carrillo, Cleverley (Pereyra 35'), Richarlison; Gray (Okaka 73')
SOUTHAMPTON (4-2-3-1): McCarthy; Soares, Stephens, Hoedt, Bertrand; Hojberg, Romeu; Ward-Prowse (Sims 90+3'), Tadic (Boufal 90+2'), Davis (Lemina 63'); Long