Manchester City (4-4-2)
Ederson 9 Pinged a raking 60-yard pass to set up move for opener and ended having witnessed a superb City display in front of him.
Kyle Walker 6 Watched Neymar closely and can be proud of his contribution in a fine defensive performance.
John Stones 9 A formidable presence, the centre-back is in the form of his career and becoming ever better.
Rúben Dias 9 Marshalled the rearguard superbly, the Portuguese flung himself at the ball time after time, making blocks for fun.
Oleksandr Zinchenko 8 Was instrumental in Mahrez’s strike, collecting Ederson’s ball. Clever finding gaps throughout. An underrated talent.
Riyad Mahrez 10 Clinical finish in each half ensured City are in their first European Cup final. The Algerian is a potent force.
Fernandinho 8 Preferred ahead of Rodri on 36th birthday and provided the necessary midfield grit in a captain’s performance.
Ilkay Gündogan 8 Glided about always ready to receive, his passing in tight spaces and vision was excellent.
Phil Foden 9 The 20-year-old purred through the contest, creating Mahrez’s second, and deserved Guardiola’s hug when substituted
Kevin De Bruyne 9 As classy as ever, the Belgian’s powerful surges yanked Paris Saint-Germain out of shape all evening.
Bernardo Silva 7 Sluggish when allowing Di María to shoot but zig-zagged across front as ghost No 9.
Substitutes Sterling (for Silva, 82) 6, Jesus (for De Bruyne, 82) 6, Aguero (for Foden, 84), 6
Paris Saint-Germain (4-3-3)
Keylor Navas 6 Allowed no chance for City’s goals, the goalkeeper ended surely frustrated by his teammates’ insipidness.
Alessandro Florenzi 4 Caught out of position when Zinchenko found space along right-back’s flank for Mahrez’s opening goal and showed nothing going forward.
Marquinhos 6 Hit bar with header but captain was as muted as his side and will know City were worthy victors.
Presnel Kimpembe 3 Was caught slumbering for each City strike, and ugly hack on Jesus was dangerous.
Abdou Diallo 6 Left-back showed energy and tried to initiate attacks when he could but was largely impotent.
Ander Herrera 4 Silly booking showed up a lack of poise and the Spaniard never affected the contest.
Leandro Paredes 3 Swamped by light blue shirts and should not be proud of slyly hitting ball at supine Foden’s head.
Marco Verratti 4 Italian had scant influence from central role and lost his head as team lost the plot.
Angel Di Maria 1 Spurned a golden chance to equalise before being sent off for ridiculous lunge at Fernandinho.
Mauro Icardi 4 Argentinian started in place of Kylian Mbappé in attack and was a non-factor until being substituted.
Neymar 7 Brazilian ended the semi-final having offered only flashes of his magnificent talent. A shame.
Substitutes Kean (Icardi, 61) 5, Draxler (Herrera, 61) 5, Danilo (Paredes, 75) 4, Dagba (Florenzi, 75) 4, Bakker (Diallo, 81) 5