Substitute Gabriel Jesus had an injury-time goal ruled out by VAR as Tottenham left Manchester City with a 2-2 draw, scoring with their only two shots on target.
Jesus looked to have extended City's winning Premier League run to 16 games with an effort on the stretch, but a handball in the lead up by Aymeric Laporte meant Spurs benefited from VAR again, just four months after their historic Champions League quarter-final at the Etihad.
- Premier League: Reports and highlights from every game
- How to watch Premier League highlights on Sky
- The Premier League table
- Man City vs Tottenham player ratings
City went ahead on Saturday evening through Raheem Sterling's deft far-post header from a superb Kevin De Bruyne cross (20), but Spurs were soon level as Erik Lamela's low, curling effort from 20 yards found the bottom corner (23).
The champions went into the half ahead through Sergio Aguero's sweeping close-range finish, again from De Bruyne's wondrous right-wing delivery (35), but Spurs levelled again through Lucas Moura's header, his first touch after being subbed on (56).
The question of handball
Though Laporte's handball looked accidental, under rules introduced on June 1 by IFAB, any goal created by an accidental handball is to be disallowed. Therefore, the VAR decision was correct.
Aguero and Pep Guardiola looked to be involved in a heated argument as the striker was subbed off with 25 minutes remaining for Jesus, but the manager's decision looked to be vindicated - until the Brazilian's late effort was ruled out.
How Spurs and VAR frustrated City
City players wore No 19 Leroy Sane shirts in the warm-up in support of the injured German winger, but his absence did not impact the hosts in the first half as De Bruyne stole the show.
There was lots of talk about that City 'B' team in the week, and they picked out three of their 'reserves' against Spurs.
After the 5-0 win at West Ham, the little-known Sergio Aguero, Bernardo Silva and Ilkay Gundogan came in, replacing Gabriel Jesus, David Silva and Riyad Mahrez.
Spurs made one change from the win over Villa as Christian Eriksen replaced Lucas Moura.
Spurs struggled to get out of their half early on as City had a shout for a penalty turned down when Lamela shoved Rodri, but the visitors were soon punished. De Bruyne's first-time cross from the right was expertly tucked home by the head of Sterling, arriving unmarked at the back post for his fifth in three games.
Spurs equalised against the run of play as Lamela found the bottom corner, thanks to some suspect positioning from goalkeeper Ederson, but besides that City had the best of it, reducing Harry Kane to just one touch in the final third in the first half.
The De Bruyne show then continued. Picking up the ball on the right, the Belgian's fierce, low cross found the arriving Aguero to touch home past Hugo Lloris from a few yards.
City lay siege on Spurs' goal after the break as Lloris saved from Oleksandr Zinchenko and then Bernardo Silva, who should have done better from close range, but with only their second shot on goal, Spurs levelled as Moura nodded over Ederson from a Lamela corner.
The hosts then hit the bar through Bernardo Silva's hooked rebound from 15 yards, while Aguero looked annoyed at Guardiola as he was subbed off for Jesus, who went close with a header in the closing stages.
Jesus then thought he had won it, sweeping home on the stretch from eight yards through a crowd of players, but the Etihad's delirium turned to despair as the VAR informed Michael Oliver that Laporte had handled in the build-up, sending Spurs fans into raptures just seconds after some travelling supporters had turned to leave the stadium.
City fans were critical of the decision after seeing the incident on the big screens at the Etihad, while Spurs fans were singing "VAR, my lord, VAR!" for the second time in five months at this ground as they escaped with a draw that must have felt like a victory.
Pep Guardiola: "I thought we left that situation in Tottenham in the Champions League last season. But it is the same. The referee and VAR disallow it. It's the second time [it's happened] - it's tough. It's honestly tough but it's the way it is.
"It happened last week with Wolves and we saw for Chelsea on Wednesday - the keeper wasn't on his line - Adrian in the penalty shoot-out. They have to fix it.
"It was incredible it wasn't a penalty in the first half [for the foul on Rodri in the box] but VAR said it wasn't and then at the end they did. I'm pretty sure people were happy today, we just need to work harder at scoring our chances."
Mauricio Pochettino: "I am in love with VAR. I wasn't agreeing with it from the beginning when we started talking about it, but sometimes you get the benefit like today or in the Champions League.
"We can't stop the evolution of the technology, but it's difficult because we love football from 30 years ago when it was only the referee's decision. Some unfair things happened but across a season, you find a good balance.
"We are living in a different era, technology is in football now and we have to accept today it's a benefit for us, it will be against us and we have to accept it with patience and a good face.
- Manchester City mustered 30 shots in the game, the most Tottenham have faced in a Premier League fixture since November 2011 (31 v Fulham).
- Raheem Sterling has been directly involved in seven goals in his last seven games for Man City against Spurs in all competitions (6 goals, 1 assist), including netting five in his last four against them at the Etihad.
- Manchester City's Raheem Sterling has scored in four consecutive club appearances in all competitions for the first time in his career, netting seven goals in those four games.
Man of the match - Kevin De Bruyne
Man of the match and back to his very best. His two assists were De Bruyne at his very best after an off-season last term. The first assist in particular, a first-time cross for Sterling at the back post, was sublime.
Kevin De Bruyne's match contribution— Sky Sports Statto (@SkySportsStatto) August 17, 2019
2️⃣ Assists (most in match)
9️⃣ Chances created (most in match)
1️⃣8️⃣ Crosses (most in match)
3 @premierleague assists this season, already more than his total of 2 PL assists last season pic.twitter.com/CAFhCRXyby
Manchester City now go to Bournemouth on Super Sunday, live on Sky Sports Premier League at 2pm, while Tottenham host Newcastle, also on Super Sunday at 4.30pm on Sky Sports Premier League.