Manchester City were far from their best but managed to grind out a nervy 3-0 win over Brighton that saw them return to the top of the Premier League table on Wednesday night.
Pep Guardiola's men were dominant throughout but pretty lifeless in front of goal, and they needed deflected strikes from Riyad Mahrez and Phil Foden, plus a nice goal from Bernardo Silva, to seal all three points.
City began brightly and had their first shot at goal inside the first few minutes. A corner dropped to Mahrez at the edge of the box and his wild volley went flying high and wide.
Nathan Ake and Mahrez both had half-chance headers shortly after, with City knocking on the door but struggling to really find a way through.
Out of nowhere, Mahrez was nearly gifted a goal after a shocking clearance from Robert Sanchez, whose pass went across the box and landed at the feet of the Algerian, who couldn't get his feet sorted out in time before Moises Caicedo slid back to end the danger.
The pressure was ramping up and Kevin De Bruyne soon had Sanchez scrambling with a strike from range that only narrowly fizzed past the goalkeeper's post. Next up was Silva's curling strike, which was well dealt with by Sanchez.
Despite City's dominance in the first half, the only time they really looked like getting past Sanchez was when the Brighton man brought the danger on himself. Guardiola had work to do at the break.
It was the same story straight after the interval, with Joao Cancelo and Rodri both seeing efforts fizz wide just a few minutes into the second half, but they finally broke the deadlock through Mahrez in the 53rd minute.
De Bruyne inspired a counter attack and found the onrushing Mahrez, whose strike on goal looked a bit tame but looped over Sanchez after a wicked deflection off Joel Veltman.
There was plenty of good fortune about that goal and perhaps even more for the second that came ten minutes later.
Some sloppy Brighton passing ended up handing City a corner which Mahrez played to Foden outside the area. The Englishman's strike was pretty rubbish, if we're being honest, but another huge deflection guided it past Sanchez.
Foden had the chance to net a better goal later on but sent his tame effort right at Sanchez, before the offside flag spared his blushes anyway.
It took City 82 minutes to actually show any real quality in front of goal. Some superb pressing saw Silva end up with the ball, and his one-touch finish from the edge of the box was perfectly placed into Sanchez's bottom corner to secure what ended up being a fairly routine win.
Man City vs Brighton player ratings
1. Man City (4-3-3)
GK: Ederson - 6/10 - A quiet evening for the Brazilian.
RB: Joao Cancelo - 6/10 - A right-back who looks worse on the right than the left. Improved after switching sides at the break.
CB: John Stones - 6/10 - A pretty comfortable minutes. Wasn't really tested but looked to have picked up a knock late on.
CB: Aymeric Laporte - 6/10 - Ditto, apart from the knock.
LB: Nathan Ake - 4/10 - Probably a little harsh but the drop off in City's threat because of his attacking limitations was startling. Hooked at the break, apparently because of an injury.
DM: Rodri - 5/10 - Again a little unfair but Rodri's slow play made City worse. Not really needed for a game like this.
CM: Ilkay Gundogan - 5/10 - Seemed scared to push forwards. His sideways passes were indicative of City's issues.
CM: Kevin De Bruyne - 9/10 - City's shining light in the first half and an absolute star in the second.
RW: Riyad Mahrez - 6/10 - A tricky one to rate. Got into a lot of nice positions and looked like his side's biggest threat at times, although he was far too wasteful in those areas. Needed a lot of help with his goal.
ST: Bernardo Silva - 7/10 - Loses so much impact in this false nine role. Given more freedom in the second half and looked significantly better for it. An excellent goal.
LW: Phil Foden - 6/10 - Didn't have much success up against Lamptey and Veltman. Very fortunate to get his goal but redeemed himself with a nice press for the third.
SUB: Ruben Dias (46' for Ake) - 6/10 - Looked solid when tested.
SUB: Oleksandr Zinchenko (74' for Stones) - 7/10 - Good energy and awareness to set up the third.
SUB: Gabriel Jesus (83' for De Bruyne) - N/A
2. Brighton (3-5-2)
GK: Robert Sanchez - 5/10 - Did his best to concede in the first half. A shocking error to gift Mahrez a chance which absolutely should have been a goal.
CB: Joel Veltman - 6/10 - All over the shop early on but calmed himself down pretty well.
CB: Lewis Dunk - 7/10 - Is Dunk a Liverpool fan? Could hardly have done more to keep City out if he tried.
CB: Marc Cucurella - 7/10 - Managed to stop Mahrez from conjuring up any real magic. Really composed defensively.
RM: Tariq Lamptey - 7/10 - Didn't do too much in attack but locked up Foden at the back.
CM: Pascal Gross - 5/10 - No control in the midfield battle. Found it tough up against De Bruyne. Understandable.
CM: Moises Caicedo - 6/10 - Blocked some certain goals in the first half but guilty of switching off for Mahrez's opener.
CM: Alexis Mac Allister - 4/10 - Didn't see a lot of the ball and his defensive limitations were on show in this deep role.
LM: Solly March - 5/10 - Some good work and some bad work. A typical March performance.
ST: Enock Mwepu - 5/10 - Needed to bring De Bruyne down for the opener. A poor decision.
ST: Danny Welbeck - 4/10 - Barely in this game at all.
SUB: Adam Webster (61' for Lamptey) - 5/10 - Booked for a cynical foul late on.
SUB: Jeremy Sarmiento (73' for Caicedo) - 6/10 - Some good fun when on the ball.
SUB: Neal Maupay (77' for Welbeck) - 5/10 - Not enough time to get involved.