Christian Pulisic gave Chelsea the lead in the first half after a mistake from Benjamin Mendy only for Kevin De Bruyne to equalise with a wonderful free kick after the break. Pep Guardiola's side dominated the period immediately afterward but Chelsea sealed a valuable three points when Willian scored from the spot 12 minutes from time following a VAR decision to award a penalty for Fernandinho's deliberate handball on the goal line. The Brazilian was sent off and with 10 men, City never really looked like winning the game and ruining Liverpool's celebrations.
De Bruyne's free kick to pull City level in the second half was unstoppable. The Belgian got it up and down over the wall and the dip he got as the ball drove into the top corner gave Kepa Arrizabalaga no chance. It triggered a period of dominance for the visitors before Chelsea snatched it.
Benjamin Mendy had a good game against Arsenal and the best and worst of the Frenchman was on show at Stamford Bridge. He got forward well and put in two very good crosses, but he was also responsible for Chelsea's opener with two horrendous mistakes. First, he got in the way of Ilkay Gundogan on the halfway line and when he had the chance to slow Pulisic down, he lunged in and let the American fly past.
Manager rating (out of 10)
Pep Guardiola, 7: The City manager suggested at his prematch news conference he could pick a weakened team and focus on Sunday's FA Cup quarterfinal with Newcastle, but the XI he chose here was as strong as it gets. Went for it with his early substitutions in the second half and it almost paid off.
Player ratings (1-10; 10 = best. Players introduced after 70 minutes get no rating)
DF Kyle Walker, 7 -- Fantastic pace and desire to make an unbelievable clearance off the line when Pulisic thought he had his second goal of the night after rounding Ederson.
DF Benjamin Mendy, 5 -- Made a mess of his attempt to stop Pulisic as Chelsea scored the opener on the break.
DF Fernandinho, 6 -- Forced a good save from Kepa with a near-post header. Gave away the penalty for deliberate handball on the line and was sent off.
DF Aymeric Laporte, 7 -- Quietly played well but was taken off at 1-1 as Guardiola looks to protect his best centre-back after so long on the sidelines.
MF Rodri, 6 -- Was helping City edge the battle in midfield but was sacrificed early in the second half when Guardiola decided to attack.
MF Ilkay Gundogan, 6 -- Involved in the horrible mix-up with Mendy on the halfway line that allowed Pulisic to score after 35 minutes.
MF Kevin De Bruyne, 7 -- Exquisite free kick from 25 yards to equalise. Will regret not bringing down Willian in the build-up to Chelsea's penalty.
FW Bernardo Silva, 5 -- With no natural No. 9 in the team, he was allowed to drift wherever he wanted. Movement was good but never really got into the game.
FW Riyad Mahrez, 7 -- Fizzed a left-foot shot just over the crossbar. Drove at Chelsea's defence to win the free kick from which De Bruyne scored.
FW Raheem Sterling, 6 -- So unlucky not to cap a brilliant move with a goal when his clip over Kepa came back off the post.
FW Gabriel Jesus (for Bernardo Silva, 55), 6 -- Didn't see much of the ball.
MF David Silva (for Rodri, 55), 7 -- City got better when he came on.
DF Aleks Zinchenko (for Benjamin Mendy, 59), 6-- Willian's break came down his side.
DF Nicolas Otamendi (for Aymeric Laporte, 73), N/R -- Didn't have much to do.