Manchester City climbed to the top of the Premier League with a dramatic stoppage-time penalty from Erling Haaland, snatching a 2-1 win at home to Fulham after playing with ten men for more than an hour on Saturday afternoon.
Much like the driving Manchester rain, Pep Guardiola's side were unrelenting to open the contest, taking a deserved lead as they swamped and swarmed their visitors. The downpour didn't let up but City were pegged back and a man down within the opening half-hour.
Joao Cancelo was rightly sent off after conceding the penalty Andreas Pereira converted. Haaland came off the bench to snatch all three points for City right at the death from a penalty Fulham could have avoided.
Fulham may have been missing their talismanic striker Aleksandar Mitrovic but arrived at the home of the champions sitting seventh, with more points this term than they had acquired at the same stage in each of their last two top-flight campaigns combined.
Marco Silva didn't set his side up in the familiar armadillo shell most teams deploy at the Etihad. However, City swiftly exploited the space behind Fulham's backline which the visitor's press created.
Ilkay Gundogan exchanged a flurry of passes in the centre circle before driving forward, sliding Julian Alvarez into the box with a devilishly weighted pass. Haaland's stand-in crashed a 17th-minute opener into the net via the underside of the crossbar.
City enjoyed a suffocating dominance of possession and territory until they were knocked out of their strut in the 26th minute.
Joao Palhinha untangled himself from Nathan Ake with the ball, prodding Harry Wilson into the penalty box. In a desperate bid to shoulder Wilson out of the way, Cancelo barged into his back, giving the referee little option but to award a penalty and show City's last man a red card.
Pereira made a nasty tackle which had escaped the scrutiny of the officials earlier in the first half but remained on the pitch to slot the spot kick into the bottom corner.
City dealt with the numerical disadvantage chaotically to begin with before tightening up after the interval, taking the sting out of the contest with a monopoly of the ball. Fulham were limited to just three shots all game.
Guardiola turned to his wildcard for the final 25 minutes. Haaland lumbered off the bench to nod what he thought was the winning goal only for VAR to intervene.
Kevin De Bruyne had teed up the Nordic goal-gobbler's disallowed header but provided another opportunity for a decisive intervention off the bench. Wriggling around in Fulham's box, De Bruyne lured Antonee Robinson into a rash tackle, very much winning the spot kick Haaland converted in the 95th minute.
Man City vs Fulham player ratings - Premier League
1. Man City (4-3-3)
GK: Ederson - 5/10 - Perhaps could have given Cancelo a shout to avoid the last-ditch intervention given his proximity to the red-card challenge.
RB: John Stones - 4/10 - Had a goal ruled out 53 seconds before Cancelo was sent off. Tucked into midfield for much of the contest.
CB: Manuel Akanji - 5/10 - Keen to punch a pass between the lines but was liable to wander off the ball.
CB: Nathan Ake - 3/10 - Cancelo was forced to try and cover for Ake's initial mistake when he came out second best in a 50-50 with Palhinha.
LB: Joao Cancelo - 2/10 - Perplexed by his dismissal but Cancelo's attempt at a shoulder-to-shoulder connected with the space between Wilson's shoulder blades.
CM: Kevin De Bruyne - 7/10 - In perpetual motion, surging around the pitch in a perennial pocket of space.
CM: Rodri - 8/10 - After the red card, Rodri's importance ballooned as he was tasked with slipping between midfield and defence as City took risked getting exposed in transition.
CM: Ilkay Gundogan - 6/10 - Scurrying around midfield with penetrative runs on and off the ball.
RW: Bernardo Silva - 5/10 - Got increasingly frustrated with the officiating which distracted from his game.
ST: Julian Alvarez - 7/10 - Took his goal superbly, causing Fulham's backline a nagging problem by repeatedly darting in behind. Unlikely to make way for Haaland.
LW: Jack Grealish - 4/10 - Attracted players towards him when he carried the ball but didn't deliver any end product himself.
SUB: Phil Foden (64' for Grealish) - 4/10 - Largely ineffective after his introduction.
SUB: Erling Haaland (64' for Alvarez) - 7/10 - Unusually mistimed his run but just about squeezed in the match-winner.
SUB: Ruben Dias (90+6' for Gundogan) - N/A
Manager: Pep Guardiola - 5/10 - He may have had Mitrovic in mind, but Guardiola had warned his side pre-game about the danger of "second balls" against Fulham. Ake's failure to deal with one led to Cancelo's dismissal. Got away with one here.
2. Fulham (4-2-3-1)
GK: Bernd Leno - 4/10 - Made a flurry of stops before seemingly ducking underneath Alvarez's powerful effort. Should have done much better with Haaland's spot kick.
RB: Kenny Tete - 6/10 - Kept Grealish at arm's length for much of the contest.
CB: Issa Diop - 6/10 - Despite the fierce counter-press City engaged in - before and after the red card - Diop was confident on the ball.
CB: Tim Ream - 4/10 - Couldn't shift his feet quickly enough while back-pedalling in vain up against Alvarez.
LB: Antonee Robinson - 5/10 - Undid an assured performance with a late misjudgment.
CM: Harrison Reed - 5/10 - Buzzing around his fellow fair-haired midfielder De Bruyne, trying to unsettle the imperious Belgian.
CM: Joao Palhinha - 6/10 - Played a crucial role in Fulham's equaliser in a characteristic burst of ball-winning.
AM: Andreas Pereira - 5/10 - The former Manchester United midfielder cooly converted his spot-kick but wasn't heavily involved in open play.
RW: Harry Wilson - 6/10 - Cleverly positioned his body between Cancelo and the ball, creating the circumstances for the penalty.
ST: Vinicius - 4/10 - In the absence of Mitrovic, Vinicius threw his weight around the top of the pitch but couldn't settle the fury once in possession.
LW: Willian - 5/10 - Dangerous when he sporadically scuttled onto the ball and was diligent defensively.
SUB: Tom Cairney (76' for Vinicius) - 5/10
SUB: Daniel James (76' for Wilson) - N/A
SUB: Kevin Mbabu (80' for Willian) - N/A
SUB: Luke Harris (88' for Pereira) - N/A
Manager: Marco Silva - 4/10 - Approached the opening half-hour bravely but seemed to sit back against ten men more than the initial XI and was ultimately made to pay.