Haaland Shines as Manchester City Defeats Porto 2-0
Erling Haaland punished Porto at the Estadio do Dragao with a ruthless second-half double – but Manchester City walked away with three points and yet more questions about their edge.
Maresca’s side won. They did not convince.
Haaland wastes, Costa dazzles
For 45 minutes, this was the story of Diogo Costa and Erling Haaland – and only one of them looked like a Champions League predator.
City carved Porto open early. Antoine Semenyo cut in and tested Costa from range on 16 minutes, a sighter that drew a routine stop but set the tone. The Portuguese goalkeeper then moved from solid to spectacular.
On 21 minutes, Semenyo slipped Phil Foden into space. Foden’s clipped cross found Haaland, alone and exactly where City want him. One touch, one swing, one expected net-burst. Costa read it, flung out a glove and denied him.
Haaland’s frustration grew. On 27 minutes he climbed to meet another Semenyo cross from the left and planted his header over the bar. A huge chance, wasted again.
City kept coming. Foden weaved through a maze of blue and white shirts just before the half-hour, wriggling around the box before forcing Costa into another sharp stop. The Dragao roared; Porto were under siege, but their goalkeeper was playing like a man possessed.
The peak of his first-half heroics came on 31 minutes. Haaland drilled low from inside the area, Costa smothered, sprang up instantly and threw himself at Rayan Cherki’s rebound. Double save. Double disbelief from City.
Porto, meanwhile, barely laid a glove on City’s goal but still managed to inject controversy. Marc Guehi caught Gabri Veiga with his arm on 42 minutes, leaving the Porto man bleeding and the home bench furious. They screamed for a red card for violent conduct. The referee kept his cards in his pocket, judging it accidental rather than malicious. The Dragao did not agree.
City had dominated the half, controlled the ball, created the chances. The scoreline, somehow, stayed blank.
Haaland makes amends, City step off
Two minutes after the restart, Haaland reset the narrative.
Enzo Fernandez swung in a cross from the right. Haaland bullied Jakub Kiwior out of the way, powered his header off the post and in. From wasteful to clinical in a heartbeat. City finally had the lead their first-half control deserved.
Porto thought they had a lifeline almost immediately. Gianluigi Donnarumma came flying out and clattered into winger Pepe in the box on 49 minutes, the kind of collision that normally sends VAR screens lighting up. The flag was already raised; the forward had strayed offside. No penalty. City breathed again.
Then the pattern changed.
With the goal banked, City’s intensity dipped. Passes slowed, touches loosened, and the Portuguese champions sensed it. The crowd did too. The noise rose, the tackles bit harder, and Maresca’s side suddenly looked less sure of themselves.
On 57 minutes, Porto finally registered a shot – and it nearly undid City. Alan Varela picked up the ball on the edge of the area and curled a precise effort just wide of the far post. Donnarumma watched and hoped. It was a warning.
City did not always heed it. At 66 minutes, Donnarumma dallied on the ball and almost paid a heavy price. William Gomes closed him down, nicked at his heels, and for a second it looked as though the forward would steal in. The ball squirmed away for a goal kick. Nervous laughter, not relief, for City.
Maresca’s men still carried threat. Substitute Rayan Ait-Nouri should have killed it on 85 minutes, steering wide from a promising position when the goal opened up. The miss kept the tension alive and the stadium on edge.
Haaland finished the argument in stoppage time.
Ait-Nouri did brilliantly down the left, driving to the byline and cutting the ball back with precision. Haaland arrived, calm now, and tucked his finish past Costa for 2-0 on 90+1 minutes. Clinical, again. Game done.
Maresca pleased – but the warning lights flash
The scoreline says routine away win against the champions of Portugal. The performance says something else.
Haaland, speaking afterwards, leaned into the challenge of nights like this. He talked about the atmosphere being “unreal at times”, about facing “a difficult fight, man against man” against “a top team” who “play amazing football”. He insisted City “controlled the whole first half”, admitted he “could have easily had a few more goals”, and stressed that “these are the games we have to win” to avoid pressure piling up in the Champions League.
He also pointed to the standard. At Manchester City, he said, “you have to win games and win trophies” – and that Enzo Maresca “has to demand a lot from us and each other”.
Maresca, for his part, saw enough to be satisfied. He highlighted the volume of chances, especially before half-time, and argued his side “deserved to win the game”. Porto, he pointed out, “didn’t create a lot” and any moments they did have came from “some mistakes from us”. In this stadium, he said, it is “not reality” to expect to play and “not concede anything”.
On the face of it, he is right. City became the first team this calendar year to beat Porto at the Estadio do Dragao. They did it while limiting clear chances, riding an intense atmosphere and keeping a clean sheet. As an opening step in a Champions League campaign, it works.
But the pattern of the season refuses to go away.
They were thrashed by Arsenal in the Community Shield. They needed a late surge and a slice of fortune to get past Bournemouth. They smashed Crystal Palace, then laboured and almost slipped against Coventry in a 1-0 win. Now this: 47 minutes of control, then a wobble that a sharper side might have punished.
Slack passes. Cheap turnovers. A goalkeeper flirting with disaster under pressure. City keep reaching for the flame.
On Sunday comes a different test. Manchester United at Old Trafford. A rival who will seize on any looseness and feed off any anxiety. Another big atmosphere, another stage where Maresca’s City must show they can dominate not just in patches, but for the full stretch.
Keep playing with fire like this, and sooner or later, someone will make them pay.




