Ederson – 8
Looked uncharacteristically nervy initially, gifting an opportunity to Inter with a slack pass in the first half, then having to rush off his line to deny Lautaro Martinez after a communication breakdown with Manuel Akanji, but none of that mattered after two outstanding saves in the closing stages.
Nathan Ake – 7
Brought back into the team in place of Kyle Walker, having been on the bench against Real Madrid in the semi-finals, and justified his inclusion with a solid display. Rarely troubled by the usually dangerous Denzel Dumfries and used the ball smartly.
Ruben Dias – 8
A superb defensive header in the early stages set the tone for a commanding individual performance. Dominated defensively and always looked assured on the ball, despite Inter’s pressing.
Manuel Akanji – 7
Produced a fine pass to release Bernardo Silva before the goal, that contribution evening out some awkward defensive moments. Partly responsible for the miscommunication which allowed Martinez to run through in the second half and failed to clear his lines before Federico Dimarco hit the bar soon after the goal.
John Stones – 8
Again looked supremely comfortable in his new midfield role, happily taking the ball under pressure, recycling possession and sometimes slaloming away from defenders deep in Inter’s half. Earned a standing ovation from the City fans when he was substituted.
Rodri – 9
Infamously dropped in the 2021 final but there was never any doubt that he would start this one and his performance showed why. Impressed in and out of possession at the base of midfield, particularly in the second period, and capped an outstanding all-round display with a brilliantly-taken winning goal.
Bernardo Silva – 7
Curled an early effort inches wide after driving into the Inter box from the right and had a hand in Rodri’s winner, his cut-back eventually finding its way to the Spaniard.
Kevin De Bruyne – 7
Having been forced off with a facial injury an hour into the 2021 final, De Bruyne this time lasted only 36 minutes, an apparent hamstring problem seeing him replaced by Phil Foden. The Belgian had already set up a good chance for Erling Haaland and his withdrawal disrupted City’s rhythm.
Ilkay Gundogan – 7
The 32-year-old has often been Manchester City’s match-winner in recent months but on this occasion, in what may be his final appearance for the club, he was quieter. Still linked midfield and attack effectively, though, and mucked in defensively too.
Jack Grealish – 7
Most of City’s attacks were directed down his flank in the first half but he met stiff resistance in the form of Matteo Darmian and wing-back Dumfries. Worked hard, though, and as ever provided an invaluable outlet for Pep Guardiola’s side.
Erling Haaland – 7
A quiet night for the PFA Player of the Year. Only had one shot on goal and spurned that chance, shooting too close to Onana in the first half having been put through on goal by De Bruyne.
Phil Foden – 7
Thrown on earlier than expected after De Bruyne’s injury. Initially struggled to get into the game but grew into it and almost added a second goal following a sensational turn and run into the Inter box.
Kyle Walker – 7
Came on in place of Stones after spending what seemed like an eternity stripped and waiting to enter the field of play. Helped City see out the result in the closing stages.
Andre Onana – 7
Stayed on his feet to prevent Haaland from converting City’s best chance of the first half and also made a good stop from Foden, but could do little about Rodri’s winner.
Matteo Darmian – 7
Played primarly as a full-back during his time at Manchester United but was stationed on the right of Inter’s back three here and defended well up against the usually dangerous Grealish.
Francesco Acerbi – 7
Faced a daunting evening up against Haaland but generally held his own, showing his physicality and experience to help nullify the Norwegian for long periods.
Alessandro Bastoni – 7
Together with Acerbi, he helped to ensure Haaland rarely threatened, showing his aerial strength and winning duels.
Denzel Dumfries – 6
Played high up at wing-back in the early stages but was gradually forced deeper, the Dutchman unable to show his usual attacking threat.
Marcelo Brozovic – 7
A busy night at the base of Inter’s midfield. Made some important defensive interventions, worked tirelessly to harry his City counterparts, and dug out an excellent cross which Romelu Lukaku should have converted late on.
Nicolo Barella – 6
Like Inter captain Brozovic, he was industrious in midfield, seemingly covering every blade of grass as he attempted to stifle City. Should perhaps have made more of the chance presented to him by Ederson’s poor pass in the first half.
Hakan Calhanoglu – 6
Selected in place of Henrikh Mkhitaryan, who was only fit enough for the bench following an injury, and provided added combativeness in midfield, but offered little in possession.
Federico Dimarco – 7
An inauspicious start as he backed off Silva, allowing the Portuguese to send a shot just past the post, but was arguably Inter’s most threatening player at the other end, at one point hitting the bar with a header then seeing his follow-up effort inadvertently blocked by team-mate Lukaku.
Lautaro Martinez – 6
Set the tone for Inter in terms of his pressing, forcing turnovers in the first half and ensuring Manchester City were rarely comfortable on the ball. Denied by Ederson with one of few scoring chances.
Edin Dzeko – 6
Preferred to Romelu Lukaku alongside Martinez from the start. Like the Argentine, he worked hard off the ball, but unlike his younger team-mate, he could not sustain it. Substituted early in the second half having not mustered a shot.
Romelu Lukaku – 4
A nightmarish cameo from the former Manchester United striker. Inadvertedly blocked a goal-bound effort from Dimarco shortly after Rodri’s goal and then saw his header saved from point-blank range in stoppage time.
Robin Gosens – 6
Added a bit of attacking impetus in the closing stages but could not force a breakthrough.
Raoul Bellanova – 6
Brought on at the same time as Gosens but struggled to make an impact.
Henrikh Mkhitaryan – 6
Only fit enough to feature for the final few minutes and couldn’t change the outcome.
Danilo D’Ambrosio – 6
Another late introduction who could not alter the end result.