Third-place Tottenham fought back from 2-0 down to draw 2-2 at Etihad Stadium, but Jermain Defoe missed an injury-time chance for the visitors and Mario Balotelli won the game for City with a penalty he had earned himself.
Fouled by Tottenham captain Ledley King, the Italy striker took a step, paused and shot calmly past goalkeeper Brad Friedel to give City an 11th win from 11 home matches in this season's Premier League.
City is eight points clear of Spurs but defending champion United is still only three behind after a 2-1 win at Arsenal.
Antonio Valencia gave his best impression of former United great Cristiano Ronaldo to score United's first goal and set up the winner over an Arsenal side that slipped 18 points behind City and five behind the the final Champions League qualifying berth.
"We are still behind City but we have to keep winning games," United captain Patrice Evra said.
That isn't a problem for City, which has now scored 66 goals from 22 matches, one more than it managed in the whole of last season.
But Balotelli was fortunate to still be on the field to score after referee Howard Webb missed an apparent stamp by the already-booked striker on the head of grounded Tottenham midfielder Scott Parker.
"Shouldn't have been on the pitch," Tottenham manager Harry Redknapp said. "He kicked Scott Parker in the head. He does it a lot. He backheeled him in the face and cut his head. No one can make excuses that he didn't do it.
"Anyone can see he did do it."
The game came to life in the 56th with a flurry of four goals in 10 minutes.
David Silva split the visiting defence with a pass into Samir Nasri's feet, leaving the France midfielder to rifle a rising shot past Friedel from about 12 metres (yards). Joleon Lescott then bundled the ball across the line from close range following a cross from Nasri.
But Defoe got a goal back within a minute with a shot into an unguarded net from a narrow angle and it was 2-2 five minutes after that, Bale equalizing with a spectacular left-foot shot from a central position that curled away from diving goalkeeper Joe Hart and into the top right corner.
Spurs could have closed to within two points of City had Defoe managed to knock in Gareth Bale's low injury-time pass across goal, but the England striker could only poke the ball past the far post at full stretch.
Ecuador winger Valencia headed United into the lead in first-half injury time and darted into the area with nine minutes left to present Danny Welbeck with the chance to smash a winner past goalkeeper Wojciech Szczesny.
Robin van Persie's 71st-minute equalizer — his 19th league goal of the season — counted for little.
"We created an amazing amount of chances and to only score two is a bit disappointing," United manager Alex Ferguson said. "We should have rammed home our advantage in the first half.
"We were really adventurous, positive and had a great belief in ourselves."
Arsenal is five points behind fourth-place Chelsea — which drew 0-0 at Norwich on Saturday — and 18 behind City.
Home fans jeered manager Arsene Wenger's decision to substitute Alex Oxlade-Chamberlain with the score at 1-1, and many left after watching the young winger's replacement — Andrey Arshavin — decide not to challenge Valencia as he broke forward to set up the winning goal.
"I can understand that fans are upset about the substitution, especially when it doesn't work," Wenger said.
Wenger also left fan favourite Thierry Henry out of the squad, and the on-loan New York Red Bulls striker watched from the stands while Ryan Giggs showed the difference a veteran can make to big games when he floated in the left-wing cross for Valencia's opener.
Newcastle trails Arsenal on goal difference after Clint Dempsey's hat trick gave Fulham a 5-2 win over the Magpies on Saturday, when Aston Villa won 3-2 at Wolverhampton Wanderers, Bolton beat Liverpool 3-1, Queens Park Rangers defeated Wigan 3-1, West Bromwich Albion downed Stoke 2-1 and Sunderland won 2-0 over Swansea.