Skip to content

Millwall vs Portsmouth

Championship
Millwall
16-8-9
1-3
Final
Portsmouth
10-9-13
The Den

Match pulse

MILAttacking pressure by 5 minutes
0'HTPOR
53%Possession47%
6Shots15
3On target8
6Corners4
4Saves2
13Fouls8
17'Millenic AlliPOR60'John SwiftPOR75'Tristan CramaMIL
Team1H2HT
MIL011
POR033

Who won: Portsmouth 3-1

Portsmouth beat Millwall 3-1 on Saturday, February 21, 2026 at The Den. Goals for Millwall: Casper de Norre (64'). Goals for Portsmouth: Gustavo Caballero (46'), John Swift (55') and Marlon Pack (67').

Every player rated

Chirp Rating, 3.0 to 10.0
  1. 17.6Gustavo CaballeroAM-R
  2. 27.4Marlon PackRM
  3. 36.9John SwiftAM
  4. 46.8Casper de NorreRM
  5. 56.8Ebrima AdamsLM
  6. 66.5Nicolas SchmidG
  7. 76.5Terry DevlinRB
  8. 86.4Macaulay LangstaffSUB
  9. 96.4Colby BishopF
  10. 106.3Connor OgilvieCD-L
  11. 116.3Zak SwansonLB
  12. 126.2Regan PooleCD-R

Team stats

MILPOR
13Fouls8
1Yellow Cards2
0Red Cards0
0Offsides0
6Corner Kicks4
4Saves2
53.4Possession46.6
6SHOTS15
3ON GOAL8
0.5On Target %0.5
0Penalty Goals0
0Penalty Kicks Taken0
269Accurate Passes224
362Passes327
0.7Pass Completion %0.7
4Accurate Crosses4
35Crosses16
0.1Cross %0.3
61Long Balls71
24Accurate Long Balls18
0.4Long Balls %0.3
1Blocked Shots4
11Effective Tackles7
18Tackles12
0.6Tackle %0.6
12Interceptions7
26Effective Clearances32
26Clearances32

Player of the game

Gustavo Caballero

POR · 1 G

7.6

Deserved to win

4%
MIL · 0.05 xG
83%
Draw
13%
POR · 0.15 xG

Portsmouth created better chances: they win this game 13% of the time

Play by play

  1. Match ends, Millwall 1, Portsmouth 3.
  2. Second Half ends, Millwall 1, Portsmouth 3.
  3. 90'+5'

    Free kick won

    Mihailo Ivanovic (Millwall) wins a free kick in the defensive half.

  4. 90'+5'

    Foul

    Foul by Regan Poole (Portsmouth).

  5. 90'+5'

    Foul

    Foul by Thierno Ballo (Millwall).

  6. 90'+5'

    Free kick won

    Colby Bishop (Portsmouth) wins a free kick on the right wing.

  7. 90'+4'

    Corner awarded

    Corner, Millwall. Conceded by Jacob Brown.

  8. 90'+2'
    Sub

    Subbed on for M. Alli

    Substitution, Portsmouth. Ibane Bowat replaces Millenic Alli.

    I. Bowat

  9. 90'+2'

    Left footed shot just wide

    Attempt missed. Zak Sturge (Millwall) left footed shot from the left side of the box misses to the right.

    Z. Sturge

  10. 90'+1'

    Fourth official has announced 6 minutes of added time.

  11. 87'MIL

    Corner awarded

    Corner, Millwall. Conceded by Zak Swanson.

  12. 86'
    Sub

    Subbed on for G. Caballero

    Substitution, Portsmouth. Jacob Brown replaces Gustavo Caballero.

    J. Brown

  13. 85'

    Free kick won

    Marlon Pack (Portsmouth) wins a free kick in the attacking half.

  14. 82'

    Delay over. They are ready to continue.

  15. 81'
    Sub

    Subbed on for F. Azeez

    Substitution, Millwall. Thierno Ballo replaces Femi Azeez.

    T. Ballo

  16. 81'
    Sub

    Subbed on for C. De Norre

    Substitution, Millwall. Barry Bannan replaces Casper De Norre.

    B. Bannan

  17. 81'
    Sub

    Subbed on for A. Doughty

    Substitution, Millwall. Zak Sturge replaces Alfie Doughty.

    Z. Sturge

  18. 81'
    Sub

    Subbed on for T. Crama

    Substitution, Millwall. Ryan Leonard replaces Tristan Crama.

    R. Leonard

  19. 79'

    Delay in match because of an injury Ebou Adams (Portsmouth).

  20. 78'

    Foul

    Foul by Gustavo Caballero (Portsmouth).

  21. 78'

    Free kick won

    Alfie Doughty (Millwall) wins a free kick in the defensive half.

  22. 78'

    Left footed shot blocked

    Attempt blocked. Adrian Segecic (Portsmouth) left footed shot from outside the box is blocked. Assisted by Gustavo Caballero.

    A. Segecic

  23. 75'

    Yellow card

    Tristan Crama (Millwall) is shown the yellow card for a bad foul.

    T. Crama

  24. 75'

    Free kick won

    Millenic Alli (Portsmouth) wins a free kick on the left wing.

  25. 75'

    Foul

    Foul by Tristan Crama (Millwall).

Leaders

MILPOR
Total Shots
Jake Cooper
1
Ebrima Adams
3
Accurate Passes
Billy Mitchell
46
Marlon Pack
31
Saves
Anthony Patterson
4
Nicolas Schmid
2