From Tottenham Hotspur Stadium - Manchester City missed the chance to close the gap on Premier League leaders Arsenal to two points after falling to a 1-0 loss at Tottenham.
Spurs' perfect record against Man City at their new home was extended to five wins from five as Harry Kane became their outright record scorer.
After a tense opening 15 minutes, Spurs - who were without head coach Antonio Conte on the touchline due to recent surgery - took the lead. Pierre-Emile Hojbjerg robbed Rodri of possession and just as he seemed to be falling over after a shove, teed up Kane to slot past Ederson and cement his place as the single greatest scorer in the club's history.
Much of the first half was contested in midfield with few chances carved out, though Spurs and Man City seemed hell-bent on kicking lumps out of one another in a feisty affair.
The visitors' first half chance of note came five minutes before the break when Rodri's sweeping shot from the edge of the area was tame and easily held by Hugo Lloris.
Jack Grealish's curling strike from a similar distance sailed over the top shortly afterwards, before Riyad Mahrez's superb half-volley thundered off the underside of the crossbar and out in stoppage time.
Shortly after the break, Kane sliced a glorious chance to add a second when he mistimed a volley from Emerson Royal's pinpoint cross, while a near-post corner from Ivan Perisic was flicked up and just over by Ben Davies.
Spurs nearly caught Man City on the break when Son Heung-min slipped through Hojbjerg, but his pass over to Emerson was a little underhit and Nathan Ake was able to make a great recovery challenge.
Man City somehow didn't equalise when Kevin De Bruyne's clever free-kick picked out Julian Alvarez and his shot seemed destined to find the top corner, only for the head of Eric Dier to deflect it over.
Again Tottenham came agonisingly close to a second as Ivan Perisic's cross was just too heavy for Kane to tap in, with the England captain missing it by a whisker.
Hojbjerg did have the ball in the net when he managed to lob Ederson from 30 yards, though he had already been flagged for offside after failing to hold his run.
At the other end, Alvarez flashed another shot over as the game seemed ripe for a second goal to finally stand.
Kane so nearly bundled his way to a brace after Son carried the ball 20 yards up the pitch and towards the penalty area, with Ederson denying him from close range and the ball deflecting back out off him for a goal kick.
Spurs' counters were continuing to cause Man City problems as Ederson had to sprawl to keep Son's effort from the edge of the area out, with Hojbjerg dragging the second effort wide.
With under ten minutes remaining, Tottenham wanted a penalty when Rico Lewis appeared to handle the ball when beating Dejan Kulusevski to a cross, but their appeals were dismissed.
Tottenham were reduced to ten men when Cristian Romero picked up a second yellow card for a cynical but vital foul on Grealish.
Man City were incensed that they didn't receive a penalty deep into stoppage time when Lloris' flapped attempt to claim a cross saw him take out Rodri, and Spurs held on to take the three points.
Tottenham Hotspur player ratings
GK: Hugo Lloris - 6/10 - Commanded his area well and wasn't a liability.
CB: Cristian Romero - 7/10 - Outstanding before his sending off. Completely shut down Haaland.
CB: Eric Dier - 8/10 - Similarly excellent from a player who has often wilted in big games like this over the course of the season.
CB: Ben Davies - 8/10 - Completely untroubled regardless of who he was up against.
RM: Emerson Royal - 8/10 - Got the better of his duels with Grealish, and though still lacked a little quality on the ball, this could be forgiven.
CM: Pierre-Emile Hojbjerg - 7/10 - Did well to set up Kane's opener and put in a real shift.
CM: Rodrigo Bentancur - 6/10 - Dribbled his way out of trouble on a consistent basis though his final pass was lacking.
LM: Ivan Perisic - 6/10 - Nearly played his way into trouble at times but was largely solid, the inverse of his performance in the reverse fixture.
RF: Dejan Kulusevski - 6/10 - Slowed down plenty by Ake and Lewis but still gave Man City headaches.
LF: Son Heung-min - 6/10 - Looked ever so sharp when carrying the ball up the pitch but remained hesitant when it came to getting shots away.
CF: Harry Kane - 8/10 - Record-breaker, history-maker. Dropped deep and showed off his full range today.
Substitutes
Ryan Sessegnon (79' for Perisic) - N/A
Yves Bissouma (84' for Son) - N/A
Davinson Sanchez (88' for Kulusevski) - N/A
Manager
Cristian Stellini - 8/10 - Superbly handled the game in the absence of the ill Conte.
Manchester City player ratings
GK: Ederson - 6/10 - Made a few decent saves and his long kicks threatened to stretch the game.
RB: Kyle Walker - 6/10 - Kept his cool on his return to north London.
CB: Manuel Akanji - 6/10 - His pace proved a valuable asset in races against Son and Kulusevski.
CB: Nathan Ake - 6/10 - Was also able to break up Spurs counters with his quickness.
LB: Rico Lewis - 6/10 - Tucked into midfield and gave Kulusevski a good battle.
RM: Riyad Mahrez - 5/10 - So nearly scored one of the goals of the season, but routinely failed to get the better of Davies.
CM: Rodri - 4/10 - His sloppiness changed Man City's afternoon. Again punished for a lack of concentration.
CM: Bernardo Silva - 3/10 - Offered very, very little. Easy to forget he was playing.
LM: Jack Grealish - 4/10 - Often left frustrated by his battles with Emerson.
CF: Erling Haaland - 3/10 - Shut out of the game by Romero.
CF: Julian Alvarez - 5/10 - Slightly more effective than his quiet strike partner, but not by much.
Substitutes
Kevin De Bruyne (59' for Mahrez) - 5/10
Ilkay Gundogan (84' for Silva) - N/A
Manager
Pep Guardiola - 4/10 - Is it really that hard to win at Tottenham Hotspur Stadium?