Key events
68 mins: Anderson finds a pocket of space and rolls the ball into Foden’s path – Kiwior makes an excellent block to stop the shot from testing Costa.
67 mins: Gomes and Varela are withdrawn, with former Norwich favourite Borja Sainz and Inbeom Hwang coming on.
66 mins: Yikes! Donnarumma isn’t having a vintage half here, and his clearance rebounds off William Gomes before trickling wide of the post. That could have gone anywhere.
65 mins: Phil Foden, who has looked better as the game has gone on, sprays a pass out wide to Ndiaye, who has time to pick his spot but sends his shot too close to Diogo Costa.
64 mins: Haaland’s opening goal has been followed by 15 minutes of Porto pressure; City need to regain some midfield control.
63 mins: Veiga rushes his effort from just inside the area, sending it spinning well wide of the far post.
62 mins: Cherki and Semenyo are heading off, with Elliot Anderson and Iliman Ndiaye coming on. Enzo Fernandez will push forward, presumably.
61 mins: William Gomes cuts inside onto his left foot, but sends his shot into the side netting.
60 mins: City break but Semenyo is isolated, and his eventual through ball is too far ahead of Haaland. Maresca looks concerned, and I think some changes are imminent.
58 mins: Porto appeal for a penalty for a City challenge on the edge of the area – there wasn’t much in it, and the better option was to shift the ball right rather than to try and win a cheap pen.
Elsewhere, Real Madrid lead Inter 2-0 at the Bernabéu and it’s Lille 2-3 Betis …
56 mins: Oooof! Porto collect the ball from a half-cleared cross and Varela’s effort looks to be nestling in the back of the net – but it actually went wide and ricocheted off the stanchion behind the goal. Donnarumma may not have got there …
55 mins: Cherki has lost possession a couple of times upfield, putting unnecessary pressure on the defenders behind him.
54 mins: Donnarumma was booked after the incident with Pepe, which was presumably for dissent.
53 mins: From the corner, Alberto Costa gets a free header and nods the ball across goal – but nobody in blue and white can get the killer touch.
52 mins: Guehi gets a toe in to keep Pepe from running through on goal, but concedes a corner …
50 mins: City made a change straight after scoring, with the booked Gvardiol replaced by Khushanov, who usually plays at centre- or right-back but will fill in at left-back here.
48 mins: Porto push forward in response and Pepe gets his head to the ball before Donnarumma, who cleans him out as he rushes forward. Porto appeal at length for a penalty, but Pepe was offside when the cross came in – which is lucky for Donnarumma.
GOAL! Porto 0-1 Manchester City (Haaland 46′)
And that’s what happens when you make them angry. Cherki cleverly flicks the ball away from Costa on the byline and finds Fernandez, whose cross is headed in off the post by Erling Haaland.
According to Gabriel Clarke, there was a heated confrontation in the tunnel at half-time, with plenty of pushing and shoving before security stepped in.
Second half
Here we go again. Can City find their cutting edge, and/or will Porto offer more attacking threat? Let’s find out.
Porto players and coaches surround the referee, Szymon Marciniak, protesting the decision not to show Guehi a red card. I think once the decision was made on-field, there’s not enough there for VAR to overturn it – it wasn’t clearly deliberate or malicious.
Half time: Porto 0-0 Manchester City
Not a classic, but City have created enough chances to be a couple of goals ahead, despite getting nowhere near their fluent best.
47 mins: Andre Silva goes over in front of Gvardiol, hoping to elicit a second yellow card, but the referee isn’t buying it.
46 mins: William Gomes looks to bend his shot inside the far post, but misses by a few feet – and the offside flag is up, regardless.
45 mins: Veiga comes back on, and there’ll be three minutes of injury time.
43 mins: Veiga will need to wait for a minute to come back on, in what seems an unsatisfactory attempt at a concussion protocol. There’s some shoving and pointing between both sets of players, which the referee quickly cools down.
41 mins: A nasty collision in midfield as Guehi competes for a high ball with Veiga, who stays down with a cut to his head. Farioli claims that Guehi led with his elbow; looking at the replay, it doesn’t look that way to me.
40 mins: Gvardiol carries it forward, finds Semenyo and keeps chugging into the area. Semenyo switches the ball wide right to Foden, but left-back Fernandes shepherds him off the ball.
39 mins: The home fans are raising the volume, but their team are yet to really threaten City inside the final third.
38 mins: Veiga knocks the ball past Guehi and then barrels straight into him, looking for a foul. The referee is unmoved.
36 mins: Yellow card! Gvardiol is again ruffled by William Gomes and brings the winger down. There’s a spot of afters, both players pointing the finger, but Gvardiol is justifiably booked.
34 mins: Bouaddi is fouled by Veiga to end an unconvincing foray forward from the hosts.
32 mins: Diogo Costa has made five saves already, and is keeping Porto on terms. That City move was triggered by a lovely Bouaddi pass forward; he has looked very assured so far.
30 mins: Another City chance! Not sure how the visitors didn’t score here, as Nunes’ low cross finds Haaland, whose shot finds Costa with the goal gaping. The rebound falls to Cherki, whose rasping effort is also repelled – and Semenyo then takes a heavy touch, much to his teammates’ chagrin.
28 mins: Another half-chance for City as Foden aims for the far corner, but sees his low shot beaten away by Costa.
Source: https://www.theguardian.com/football/live/2026/sep/08/porto-v-manchester-city-champions-league-live