Porto vs Napoli

4 November 2026 · Champions League · Matchday 4 · 2026/27 · Referee Michael Oliver

Full time 4 – 1

Half-time: 1–1

  • Jan Bednarek 11’
  • Gabri Veiga 71’
  • Jakub Kiwior 80’
  • Samu Aghehowa 90’ (pen)
  • Scott McTominay 43’

Match summary

Porto won comfortably, 4-1 at home to Napoli. It was 1-1 at half-time.

In the first half, Jan Bednarek put Porto ahead with a header in the 11th minute and Scott McTominay equalised in the 43rd minute. In the second half, Gabri Veiga put Porto back in front in the 71st minute, Jakub Kiwior made it 3-1 with a header in the 80th minute, and Samu Aghehowa made it 4-1 from the penalty spot in the 90th minute.

The chances backed that up: Porto created 2.71 expected goals (xG) from 19 shots to Napoli's 1.37 from 11. Napoli had a player sent off.

Porto dominated the Champions League fixture against Napoli, recording 52 percent possession and outshooting their opponents 19 to 11. The hosts registered 8 shots on target compared to the visitors' 6, while generating an expected goals total of 2.71 against 1.37. Porto completed 518 passes with an accuracy of 86.1 percent, winning the disciplinary count comfortably as they conceded 8 fouls and received 1 yellow card. Napoli struggled with their discipline, accumulating 4 yellow cards, 1 red card, and committing 11 fouls over the course of the 90 minutes.

The match began with an early yellow card for Antonio Vergara in the 1st minute before Jan Bednarek opened the scoring for Porto in the 11th minute. Napoli collected 3 further yellow cards in the first half before Scott McTominay equalised in the 43rd minute, leaving the score 1-1 at half-time. Porto pulled ahead in the second half through goals from Gabri Veiga in the 71st minute and Jakub Kiwior in the 80th minute. Rafa Marín received a red card for a professional foul in the 88th minute, allowing Samu Aghehowa to score a penalty in the 90th minute to seal the 4-1 victory.

Match stats

51% Possession 49%
19 Shots 11
8 Shots on target 6
5 Corners 5
80 Attacks 88
58 Dangerous attacks 48
517 Passes 485
85.7% Pass accuracy 82.7%
15 Tackles 13
8 Fouls 11
1 Yellow cards 4
0 Red cards 1
4 Offsides 3

Key events

Porto Napoli
Kick-off
1’
Jan BednarekHeader1-0 (Porto)
11’
21’
35’
36’
43’
Scott McTominayRight foot shot1-1 (Napoli)
43’
Rasmus HøjlundShot on target
43’
Matteo PolitanoShot on target
45+2’
Half-time1-1
Second half underway
Gabri VeigaShot on target
49’
Pablo RosarioShot on target
52’
58’
Scott McTominayShot on target
Santiago GiménezShot on target
70’
Gabri VeigaLeft foot shot2-1 (Porto)
71’
Samu AghehowaShot on target
76’
77’
Antonio VergaraShot on target
78’
Jakub KiwiorHeader3-1 (Porto)
80’
88’
Rafa MarínProfessional foul last man
Samu AghehowaPenalty4-1 (Porto)
90’
90+2’
Noa LangShot on target
Full-time4-1

How the chances added up

Running total of expected goals (xG) for each side through the match. xG rates each chance by how often similar shots are scored. A goal is marked where it was scored.

0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 0’ 15’ 30’ 45’ 60’ 75’ 90’ HT 2.71 1.37 11’ Jan Bednarek (Porto), 1-0 11’ 43’ Scott McTominay (Napoli), 1-1 43’ 71’ Gabri Veiga (Porto), 2-1 71’ 80’ Jakub Kiwior (Porto), 3-1 80’ 90’ Samu Aghehowa (Porto), 4-1 90’ 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 0’ 15’ 30’ 45’ 60’ 75’ 90’ HT 2.71 1.37 11’ Jan Bednarek (Porto), 1-0 Bednarek 11’ 43’ Scott McTominay (Napoli), 1-1 McTominay 43’ 71’ Gabri Veiga (Porto), 2-1 Veiga 71’ 80’ Jakub Kiwior (Porto), 3-1 Kiwior 80’ 90’ Samu Aghehowa (Porto), 4-1 Aghehowa 90’
Porto 2.71 xGNapoli 1.37 xG Goal

Tap a goal for the scorer and score.

Shot map

Every shot and where it was taken from.

 Napoli attacking Porto attacking 
90’ Samu Aghehowa (Porto), penalty, 0.79 xG, goal 71’ Gabri Veiga (Porto), open play, 0.66 xG, goal 43’ Scott McTominay (Napoli), open play, 0.34 xG, goal 77’ Antonio Vergara (Napoli), open play, 0.34 xG, saved 52’ Pablo Rosario (Porto), open play, 0.26 xG, saved 43’ Rasmus Højlund (Napoli), open play, 0.23 xG, saved 80’ Jakub Kiwior (Porto), from a corner, 0.19 xG, goal 65’ Alberto Costa (Porto), open play, 0.14 xG, blocked 30’ Rasmus Højlund (Napoli), open play, 0.13 xG, off target 43’ Matteo Politano (Napoli), open play, 0.09 xG, saved 49’ Gabri Veiga (Porto), open play, 0.10 xG, saved 3’ Scott McTominay (Napoli), open play, 0.07 xG, off target 76’ Samu Aghehowa (Porto), open play, 0.07 xG, saved 11’ Jan Bednarek (Porto), from a corner, 0.06 xG, goal 65’ Martim Fernandes (Porto), open play, 0.06 xG, off target 70’ Santiago Giménez (Porto), open play, 0.06 xG, saved 56’ Jan Bednarek (Porto), from a corner, 0.06 xG, hit the woodwork 7’ Borja Sainz (Porto), from a corner, 0.05 xG, off target 63’ Gabri Veiga (Porto), open play, 0.04 xG, hit the woodwork 87’ Rafa Marín (Napoli), from a corner, 0.05 xG, off target 37’ Gabri Veiga (Porto), direct free kick, 0.04 xG, off target 69’ Pepê (Porto), open play, 0.04 xG, off target 90+2’ Noa Lang (Napoli), open play, 0.04 xG, saved 55’ Alberto Costa (Porto), open play, 0.04 xG, off target 86’ Victor Froholdt (Porto), open play, 0.03 xG, blocked 5’ Rasmus Højlund (Napoli), open play, 0.03 xG, blocked 82’ Billy Gilmour (Napoli), open play, 0.03 xG, off target 58’ Scott McTominay (Napoli), open play, 0.02 xG, saved 62’ Borja Sainz (Porto), open play, 0.02 xG, blocked 64’ Jakub Kiwior (Porto), open play, 0.01 xG, off target 90’ Samu Aghehowa (Porto), penalty, 0.79 xG, goal 71’ Gabri Veiga (Porto), open play, 0.66 xG, goal 43’ Scott McTominay (Napoli), open play, 0.34 xG, goal 77’ Antonio Vergara (Napoli), open play, 0.34 xG, saved 52’ Pablo Rosario (Porto), open play, 0.26 xG, saved 43’ Rasmus Højlund (Napoli), open play, 0.23 xG, saved 80’ Jakub Kiwior (Porto), from a corner, 0.19 xG, goal 65’ Alberto Costa (Porto), open play, 0.14 xG, blocked 30’ Rasmus Højlund (Napoli), open play, 0.13 xG, off target 43’ Matteo Politano (Napoli), open play, 0.09 xG, saved 49’ Gabri Veiga (Porto), open play, 0.10 xG, saved 76’ Samu Aghehowa (Porto), open play, 0.07 xG, saved 3’ Scott McTominay (Napoli), open play, 0.07 xG, off target 11’ Jan Bednarek (Porto), from a corner, 0.06 xG, goal 65’ Martim Fernandes (Porto), open play, 0.06 xG, off target 56’ Jan Bednarek (Porto), from a corner, 0.06 xG, hit the woodwork 70’ Santiago Giménez (Porto), open play, 0.06 xG, saved 7’ Borja Sainz (Porto), from a corner, 0.05 xG, off target 87’ Rafa Marín (Napoli), from a corner, 0.05 xG, off target 63’ Gabri Veiga (Porto), open play, 0.04 xG, hit the woodwork 90+2’ Noa Lang (Napoli), open play, 0.04 xG, saved 37’ Gabri Veiga (Porto), direct free kick, 0.04 xG, off target 69’ Pepê (Porto), open play, 0.04 xG, off target 55’ Alberto Costa (Porto), open play, 0.04 xG, off target 86’ Victor Froholdt (Porto), open play, 0.03 xG, blocked 82’ Billy Gilmour (Napoli), open play, 0.03 xG, off target 5’ Rasmus Højlund (Napoli), open play, 0.03 xG, blocked 58’ Scott McTominay (Napoli), open play, 0.02 xG, saved 62’ Borja Sainz (Porto), open play, 0.02 xG, blocked 64’ Jakub Kiwior (Porto), open play, 0.01 xG, off target
Size shows xG Goal On target Off target or blocked

Hover or tap a shot for the player, minute and xG.

Lineups

Porto 4-3-3 Starting XI
Costa
Costa
Bednarek
Kiwior
Fernandes 67’
Froholdt
Rosario
Veiga 78’
Pepê 78’
Silva 56’
Sainz 67’
Napoli 3-4-1-2 Starting XI
Meret
Beukema
Rrahmani
Marín
Anguissa 78’
McTominay
Gilmour
Politano 81’
Vergara 78’
Bruyne
Højlund

Player stats

Goalkeeper1 player
90′ 5 1 49 – – – – –
Defenders5 players
90′ 3 – – 5 2 50 – – – –
90′ 2 4 1 8 5 57 – 1 – –
90′ 1 2 – 2 1 68 1 1 – –
Martim Fernandes Taken off
67′ 1 – – 2 – 26 – – – –
Zaidu Sanusi Came on as a substitute
23′ – 1 – 1 1 12 – – – –
Midfielders5 players
90′ – – 24 – – 2 2 7 – 1 –
90′ – – 68 2 – 3 2 5 – – –
Gabri Veiga Taken off
78′ 1 1 49 3 – 2 1 8 2 4
Hwang In-beom Came on as a substitute
12′ – 1 13 2 – 1 – 1 1 – –
Seko Fofana Came on as a substitute
12′ – – 13 – – – – – – – –
Forwards5 players
Pepê Taken off
78′ – – 1 – 0.04 – 1 – – 41 –
André Silva Taken off
56′ – – – – – – 1 2 2 18 –
Borja Sainz Taken off
67′ – – 2 – 0.06 – – – – 18 –
Samu Aghehowa Came on as a substitute
34′ 1 – 2 2 0.86 – 1 4 3 6 –
Santiago Giménez Came on as a substitute
23′ – 1 1 1 0.06 – 2 – – 7 –
Came on Taken off Sent off Red is the most in that position for the team

Every player who took the pitch, starters first and then substitutes. A dash means none. xG and xA are expected goals and assists.

Form going into the game

Last five Champions League games before this one, oldest first. Select one to open it.

Previous and next meeting

Shots, expected goals, timeline, lineups, team and player statistics from Bzzoiro Sports Data (sports.bzzoiro.com). Results from Bzzoiro Sports Data.