Manchester City Claims Victory Against Porto: Haaland Shines
Erling Haaland shook his head as he walked down the tunnel at half-time in Porto. Two big chances gone, one header over, a goalkeeper in Diogo Costa who seemed determined to own the night.
Ninety minutes later, the Norwegian walked off with the match ball in spirit, if not in rule, and Manchester City walked away with something even more valuable: a hard, slightly scruffy, but significant Champions League away win.
It finished FC Porto 0-2 Manchester City.
It did not silence every doubt around Enzo Maresca’s new regime. But it did send a message.
Wasteful Haaland, relentless Costa
City started on the front foot and stayed there. Antoine Semenyo set the tone on 16 minutes, cutting inside and curling an effort into Costa’s gloves. It felt like the first tap on the door.
The second was much louder. On 21 minutes, Semenyo slid Phil Foden into space, the England midfielder clipped a gorgeous cross into the six-yard box and Haaland did what he always does: attacked it with conviction. Costa read it, flung out a strong glove and somehow kept it out.
Haaland grimaced. He would do so again.
Six minutes later, another cross from the left, this time from Semenyo, found him unmarked. The header flew over. A big miss from a man who usually treats such chances as a formality.
Porto could barely breathe. Foden weaved through a sea of blue and white shirts on 29 minutes, jinking in and out before forcing Costa into yet another sharp stop. The goalkeeper was everywhere, and he wasn’t done.
On 31 minutes, he produced the moment of the half. Haaland drove low from inside the box, Costa blocked, sprang up instantly and then denied Rayan Cherki on the rebound. The Estadio do Dragao roared his name. City’s players looked at each other in disbelief.
Porto, meanwhile, had barely crossed halfway with any conviction. Their first real flash of aggression came in the wrong way: Marc Guehi caught Gabri Veiga with his arm on 42 minutes, leaving the Porto midfielder bleeding and the home crowd howling for a red card. The referee kept his cards in his pocket, judging it accidental rather than violent, and the game simmered into the break.
City had dominated. They had nothing to show for it.
Haaland corrects the script
Two minutes into the second half, Haaland rewrote the story.
Enzo Fernandez found space on the left and whipped in a teasing ball. Haaland bullied Jakub Kiwior out of the way, threw himself at it and nodded the header in off the post. Ruthless. Simple. Exactly what he had been missing before the interval.
The release was instant. City’s bench leapt, Haaland’s celebration was part relief, part defiance. The away end bounced.
For a brief spell, it looked like City might run away with it. They moved the ball with swagger, Porto looked rattled, and the home crowd’s volume dipped.
Then the game changed.
City ease off, Porto sense a way back
With the lead secured, City eased up. Just a fraction. Touches became a little looser, passes a shade slower. Porto felt it.
On 49 minutes, Gianluigi Donnarumma clattered into Pepe in the box, sending the winger sprawling. The whistle stayed silent as the offside flag went up, but it was a warning: City were flirting with trouble.
The hosts finally registered a shot on 57 minutes. Alan Varela collected the ball on the edge of the area, opened his body and curled just wide of the far post. Donnarumma watched it go, rooted. The crowd surged back into life. It felt like the first crack in City’s control.
Maresca’s side began to misplace passes, lose duels, invite pressure. On 66 minutes, Donnarumma almost handed Porto a gift. Dithering on the ball, he was nearly robbed by William Gomes, the forward closing him down and forcing a nervy scuff behind for a goal kick. City’s goalkeeper escaped, just.
Porto still couldn’t find a shot on target. But they had belief, and City were playing with matches near dry timber.
Ait-Nouri and Haaland slam the door
The tension lingered deep into the final minutes. Rayan Ait-Nouri, on from the bench, had a golden chance on 85 minutes to end the contest but dragged his effort just wide from a promising position.
Porto pushed higher, left gaps, and finally paid for it in stoppage time.
Ait-Nouri drove to the byline in the 91st minute, cut the ball back with precision, and there was Haaland again, waiting. One touch, low and calm, into the net. 2-0. Game over.
It was not vintage City, but it was efficient, and it was ruthless in the moments that mattered.
Maresca’s mixed night: result secured, questions linger
Maresca stood on the touchline at full-time knowing two things could be true at once.
His team had just become the first side this calendar year to beat Porto at the Estadio do Dragao. They had restricted the Portuguese champions to no shots on target. They had created more than enough chances to win by a wider margin. From a cold, clinical perspective, it was a job well done.
He also knew this fit a pattern.
City were dismantled by Arsenal in the Community Shield. They needed a late surge and a slice of good fortune to get past Bournemouth. They hammered Crystal Palace, then laboured to a narrow 1-0 over Coventry when they should have been out of sight.
In Porto, they dominated for 47 minutes, scored, then allowed a dangerous, proud home side back into a contest that should have been buried long before stoppage time. The slack passing, the careless losses of possession, the lapses in concentration – a sharper opponent would have punished them.
Haaland framed it bluntly afterwards: these are the games City simply have to win. In this competition, fail to do that and the pressure multiplies quickly.
They did win. They survived the noise, the intensity, the spells of their own sloppiness. They leave Portugal with three points and a platform.
Next comes something far more familiar, and far more emotional: the Manchester derby at Old Trafford on Sunday.
Another hostile arena. Another team desperate to expose any weakness. If Maresca’s City keep flirting with danger the way they did in Porto, how long before someone finally makes them pay?





