Manuel Pellegrini's side looked on course for a seventh consecutive league away game without a win, but late strikes from Yaya Toure and Sergio Aguero saw them close the gap on leaders Arsenal back to just three points.
The match started at a quick tempo, with the hosts the early aggressors as Almen Abdi flashed a powerful effort narrowly off target from the edge of the box in the opening minutes.
Heurelho Gomes was called into action for the first time six minutes later when Kevin De Bruyne's dipping strike was parried away by the keeper, although he was a little fortunate that his save squirmed just out of the reach of Aguero.
Having been on the back foot for much of the opening exchanges, City began to grow into the game more as the half wore on and came close twice in quick succession when first Raheem Sterling blazed one over the bar from inside the area before Aleksandar Kolarov's dipping effort flew narrowly too high.
Watford began the second half as quickly as they had the first when Ben Watson brought a low stop from Hart in the opening minute, but City had the first big chance after the interval when Fernandinho planted a header over having lost his marker from a corner.
That miss proved costly just a minute later when the hosts took the lead, with Watson's corner being glanced into his own net by Kolarov.
© Getty Images
Toure sent a shot a yard or so wide of the top corner as City went in search of an equaliser, while moments later De Bruyne linked up with David Silva before drilling an effort towards goal that Gomes had to tip wide.
Etienne Capoue then bundled his way into the box before firing an effort wide with a little over 10 minutes remaining, and that miss was duly punished as City scored twice in the space of three minutes to complete their late turnaround.
The first came out of the blue as Toure, who moments before had looked exhausted when chasing back, supplied a moment of magic by lashing a first-time volley into the top corner when meeting a low set piece.
© Getty Images
City immediately went in search of a winner, and it arrived in the form of Aguero as he planted a header from Bacary Sagna's cross into the far corner for his first goal in his last five appearances.
Watford refused to give in despite the quickfire double and almost added another twist late on when the ball fell to Ighalo inside the box, but his shot on the turn was straight at Hart.
City held out for a victory that takes them to within three points of Arsenal and one of Leicester City, while Watford remain ninth in the table.