It's hard to know who felt the greater sense of vindication when two of Pep Guardiola's substitutes combined to score for Manchester City within minutes of coming on at Stamford Bridge. The manager who has been criticised for his use of the bench since Saturday, or the fans who have been calling for earlier changes to influence games.
This is maybe one of those rare occasions when both parties will feel they were proven right. After a bit of mild discontent after the flat draw with Everton at the weekend this was a reminder that Guardiola does, after all, know what he's doing.
He picked a City team that made a lot of sense, set them up in a formation that didn't, made four changes in an hour having made none for 87 minutes on Saturday. And ended up seeing his team close the gap to Arsenal to five points.
READ MORE: City player ratings vs Chelsea
It's as you were at the top from when the clock ticked into 2023, and after a big win at a big-six rival City will feel they have regained the momentum in their attempts to hunt down the Gunners. But it wasn't as easy as they've sometimes made it look at Stamford Bridge.
Guardiola handed Kyle Walker, Joao Cancelo and Phil Foden their first starts since the World Cup, while Chelsea lost Mason Mount to injury on the eve of the game, Raheem Sterling after a couple of minutes and Christian Pulisic before the first quarter was up. But they were still the more threatening side for most of the first half.
Graham Potter would have been disappointed to lose Sterling so early in the game, with the forward handed a warm reception as he trudged off past the away end, but it gave him a chance to get to grips with what City were doing.
Rather than returning at left-back, Cancelo was in an advanced position on the right, with Walker, John Stones and Nathan Ake playing in a back three, which almost turned into a one-man defence, in Stones, when City had possession. It's hard to be too surprised by anything Guardiola does now, but the sight of Stones sitting 10 yards deeper than any other defender and almost playing as a sweeper was a reminder of his propensity to dumbfound the opposition - and sometimes his own team.
It certainly looked that way in the opening stages. Guardiola had to call over Erling Haaland and Bernardo Silva in the first quarter to issue reminders to them, while he twice slapped his thigh during one move in exasperation at the failure to find Kevin De Bruyne in an advanced position between the lines. It took 20 minutes for Haaland to get his first touch, which came near the corner flag.
By then Stones had to produce a brilliant last-ditch tackle to thwart Pulisic and Bernardo got back to make a vital block as substitute Carney Chukwuemeka took aim at goal 15 yards out.
City didn't register a first shot until the 32nd minute when Ilkay Gundogan curled an effort harmlessly wide. He was much better as a provider five minutes later, finding Haaland in space next to Kalidou Koulibaly. The striker's instant touch to control a strong pass was supreme, but for once it was the finish that was lacking, a left-footed effort fired over the bar.
The game had been a slow burn until a sudden burst of end-to-end action at the end of the half. Chukwuemeka hit the inside of the post from 20 yards after cutting inside Walker, but when the rebound landed at the feet of Stones in the six-yard box, he started an attack.
The ball was moved to Gundogan and Bernardo before it left City's defensive third, but the latter sprang De Bruyne clear, only for the Belgian to take a heavy touch in the final third. His eventual shot was from a more difficult position than it needed to be and comfortable for Kepa.
Guardiola had spent the closing stages of the first half studying a piece of paper with his staff and while he didn't rip up the tactical plan, he took for what the Catalan is bold action, switching his right flank as Manuel Akanji and Rico Lewis came on for Walker and Cancelo.
The alterations didn't change the system but they did improve City. Within six minutes of the restart De Bruyne had tested Kepa again, Haaland had dragged a shot wide, Ake headed against the post from a corner and Bernardo's follow-up was deflected wide.
If City had started the game with the chaos theory, then by the hour it was back to control. The sight of Grealish and Mahrez coming on for Bernardo and Foden was a clear indication of what he wanted from his team.
Within three minutes he had it. Mahrez started the move on the right before the ball was transferred to De Bruyne. He slid Grealish in and the low cross was a simple finish for his fellow substitute, especially once Kepa had failed to cut out a cross he could have reached.
It should have been a perfect scenario for City. A goal ahead and Guardiola's 'control' team on the pitch, but he was up and down from his technical area as they made hard work of seeing the game out. When Haaland lost possession Guardiola screamed at him from the sideline and then demanded greater urgency from him when the ball went dead a couple of minutes later.
The City boss was like a jack in the box as he watched the closing stages, dropping to his haunches every time his team had to defend. It was a reminder that the pressure is already on in the title race, but when Lewis Hall blazed Chelsea's best chance to level over the bar in injury time, he could finally relax.