Match ends, Manchester City 2, Tottenham Hotspur 2.
Son Heung-Min earned Tottenham a point in controversial circumstances as they came from two goals down to earn a draw at Manchester City.
Pep Guardiola's side, looking to bounce back from a 4-0 loss at Everton, had swept into that commanding advantage courtesy of two uncharacteristic errors from Spurs keeper Hugo Lloris.
France international Lloris headed an attempted clearance straight at Leroy Sane four minutes after half-time to allow the City attacker a simple finish, then dropped Raheem Sterling's routine cross straight at Kevin De Bruyne's feet five minutes later.
Spurs responded swiftly through Dele Alli's header before they were the beneficiaries of a decision that left Guardiola raging and paved the way for the visitors to scramble a point.
Referee Andre Marriner ignored Kyle Walker's push on Sterling as he raced into the area - and seconds later Son swept a low finish past City keeper Claudio Bravo with 13 minutes left.
City pressed for a winner but were frustrated once more when Brazilian teenager Gabriel Jesus, on as for his debut as a substitute for Sterling, saw an effort ruled out for offside.
The result means Man City remain fifth, three points off second-place Tottenham and nine away from leaders Chelsea, who play Hull City on Sunday.
Frustration and fury for Guardiola
City boss Guardiola will have few complaints about the manner of their performance but they were let down by the familiar failing of a lack of ruthlessness in front of goal.
City played with verve and intensity as they penned Spurs back, but Sergio Aguero was frustrated on several occasions by Lloris, Pablo Zabaleta shot inches wide, Sterling missed that vital opportunity after he was fouled. New boy Jesus also headed inches wide.
Guardiola's animated body language spoke of his frustration - but there was also fury at the key incident - Sterling was shoved by Walker in the area seconds before Spurs attacked for Son to equalise.
He had every right to be angry. City deserved victory and for all the justified criticism aimed in their direction, there was not too much wrong with this performance.
A goalkeeper's life...
Manchester City's Bravo provided the pre-match narrative with his growing reputation as the goalkeeper who rarely makes a save - but it was the man regarded as one of Europe's finest who was almost the real villain of the piece here.
Bravo was again the goalkeeping bystander as he extended his miserable recent sequence, but Tottenham's Lloris suffered a rare nightmare display and takes responsibility for both City goals.
He should have done better than head a routine long ball against Sane for the opener, while his fumble that led to De Bruyne's second was the sort of work he would normally complete without a second thought.
Bravo was powerless for the Spurs goals - although today's two goals make it 16 from the last 24 attempts on target against him - but Lloris' misfortune was proof of how matches, and the the reputation of even the best goalkeepers, can be decided by the finest margins.
Lloris has saved Spurs on many occasions but today he was saved by his colleagues.
Spurs dig deep
Mauricio Pochettino's side would not put this display anywhere near the top of any list of their best performances this season - but they may come to regard this as a priceless point earned without playing well.
Spurs were over-run for much of the game, unsettled in possession by the pressure applied by City, but showed resilience and determination to get a draw they barely deserved.
They were also grateful for City's generosity in front of goal as they wasted as succession of chances, and to referee Marriner for refusing what appeared to be a clear penalty when Walker shoved Sterling as he raced clear in what proved to be a decisive moment.
Spurs' travelling fans celebrated as if this was a victory at the final whistle. Some days you just take the point and get home - to be able to do that at the home of close rivals will make it taste even sweeter.
Man of the match - Kevin de Bruyne
Manchester City manager Pep Guardiola told BBC Sport: "We played good, it was an outstanding performance but it's a pity what happened. All you can do is create and play better and better but it is the same for the whole season. We are upset, sad at what happened but I am so proud about what we did and the players don't deserve that again.
Tottenham manager Mauricio Pochettino told BBC Sport: "It was a tough game for both sides. It is true, they were better in the first half and maybe deserved more, it was lucky for us to be 0-0 but in the second half the game was more balanced. We conceded two and it was difficult to come back but they always believed, that is important. It's a massive point for us.
Son prospers away from home
- Manchester City failed to win a Premier League game they were two or more goals ahead in for the first time since December 2014 against Burnley.
- Six of Son Heung-min's seven Premier League goals this season have been scored away from home.
- Dele Alli has scored more Premier League goals this season (11 in 21 games) than he had in the whole of last season (10 in 33).
- Hugo Lloris made two errors leading to goals in the match - the first goalkeeper to do so in a Premier League match since Joel Robles in May 2016.
Tottenham return to league action on 31 January against Sunderland, after their FA Cup fourth-round tie with Wycombe next Saturday.
Manchester City travel to Crystal Palace in the FA Cup on 28 January before meeting West Ham on 1 February.
- 30OtamendiBooked at 52mins
- 11KolarovBooked at 45mins
- 22ClichySubstituted forStonesat 84'minutes
- 42Y Touré
- 7SterlingSubstituted forGabriel Jesusat 82'minutes
- 17De Bruyne
- 21SilvaSubstituted forDelphat 90'minutes
- 33Gabriel Jesus
- 15DierBooked at 13mins
- 4AlderweireldSubstituted forWinksat 65'minutes
- 27WimmerBooked at 12minsSubstituted forSon Heung-Minat 45'minutes
- 12WanyamaBooked at 87mins
- 19DembéléSubstituted forSissokoat 78'minutes
- 20AlliBooked at 51mins
- 7Son Heung-Min
- Andre Marriner
- Shots on Target
Second Half ends, Manchester City 2, Tottenham Hotspur 2.
Pablo Zabaleta (Manchester City) wins a free kick in the defensive half.
Foul by Danny Rose (Tottenham Hotspur).
Foul by Gabriel Jesus (Manchester City).
Danny Rose (Tottenham Hotspur) wins a free kick in the defensive half.
Substitution, Manchester City. Fabian Delph replaces David Silva.
Offside, Tottenham Hotspur. Moussa Sissoko tries a through ball, but Harry Kane is caught offside.
Offside, Manchester City. Leroy Sané tries a through ball, but Sergio Agüero is caught offside.
Victor Wanyama (Tottenham Hotspur) is shown the yellow card for a bad foul.
Sergio Agüero (Manchester City) wins a free kick in the defensive half.
Foul by Victor Wanyama (Tottenham Hotspur).
Attempt missed. Gabriel Jesus (Manchester City) header from the left side of the box misses to the left. Assisted by Aleksandar Kolarov with a cross following a set piece situation.
Sergio Agüero (Manchester City) wins a free kick on the left wing.
Foul by Eric Dier (Tottenham Hotspur).
Substitution, Manchester City. John Stones replaces Gaël Clichy.
Offside, Manchester City. Kevin De Bruyne tries a through ball, but Gabriel Jesus is caught offside.
Attempt missed. Kevin De Bruyne (Manchester City) right footed shot from the right side of the box misses to the left. Assisted by David Silva.
Attempt missed. Gabriel Jesus (Manchester City) header from the centre of the box is just a bit too high. Assisted by Kevin De Bruyne with a cross.
Substitution, Manchester City. Gabriel Jesus replaces Raheem Sterling.