Round of 32 · Thursday, July 2 · Toronto Stadium, Toronto · 43,036 in the stands
kickoff 19:00 local · 29°C · 67% humidity
tap a player for their match file
match pulse — xG per 5 minutes · goals · cards
goals — hover the strip for every shot and card, with names
- 53′Perisic0.21 xG
- 68′Ronaldo0.79 xG
- 90+4′Ramos0.07 xG
The xG race — cumulative expected goals, minute by minute
POR 0:0 CROOn paper vs as played — formation sheet vs heatmap reality
POR 4-2-3-1 attack →, ← CRO 4-2-3-1 attack. The teamsheet, as announced.
The duel — team data, FIFA tracking included
Territory — where each team lived
Every player's heatmap, minutes-weighted and stacked per team. Portugal attack →, ← Croatia attack. Brighter is more presence; where the colors meet is the contested ground.
How it happened
- 17′RUBEN DIAS (Portugal) is booked by the referee.
- ′Before the second half begins Igor MATANOVIC (in) comes off the bench to replace Ante BUDIMIR (out) (Croatia)
- 53′Ivan PERISIC (Croatia) scores!!
- 59′Luka MODRIC (Croatia) is booked by the referee.
- 62′FRANCISCO CONCEICAO (in) comes off the bench to replace PEDRO NETO (out) (Portugal)
- 62′BERNARDO SILVA (in) comes off the bench to replace VITINHA (out) (Portugal)
- 62′NELSON SEMEDO (in) comes off the bench to replace BRUNO FERNANDES (out) (Portugal)
- 62′GONCALO RAMOS (in) comes off the bench to replace JOAO CANCELO (out) (Portugal)
- 68′Penalty Awarded
- 68′CRISTIANO RONALDO (Portugal) successfully converts the penalty!
- 68′Mario PASALIC (in) comes off the bench to replace Martin BATURINA (out) (Croatia)
- 81′RUBEN NEVES (in) comes off the bench to replace CRISTIANO RONALDO (out) (Portugal)
- 90+2′Josko GVARDIOL (in) comes off the bench to replace Nikola VLASIC (out) (Croatia)
- 90+4′GONCALO RAMOS (Portugal) scores!!
- 90+6′Andrej KRAMARIC (in) comes off the bench to replace Mateo KOVACIC (out) (Croatia)
- 90+8′Ivan PERISIC (Croatia) is booked by the referee.
The morning-after column · AI-written from the match data
Portugal's Profligacy Pardoned by Late Ruthlessness
The numbers exposed Croatia's fatal weakness. Slow ball recovery—21.2 seconds versus Portugal's 13.1—meant they could never build momentum from transitions. Ramos (7.7) led the press that wore them down; Mateo Kovacic (7.4) fought valiantly in midfield but couldn't stop the tide. Portugal equalized at 68' with a genuine chance (0.79 xG), then punished late-game fatigue with a 90+4' goal from barely-expected territory (0.07 xG). Croatia's 6 shots on-target masked a deeper truth: they were never going to win this match.
Portugal's 1.91 xG created genuine control; Croatia's 6 shots on-target created an illusion of resilience that their 21.2-second ball recovery time demolished.
90+4′
Portugal's low-probability late goal—the only finish that mattered when the pressure finally broke through.
What Portugal needed
Controlled and won, but one moment of poor finishing in the opening quarter threatened to undo it all.
- Missed three big chances worth 0.86 xG in first 16 minutes—conversion rate, not creation, was the issue.
- High pressing (9.8 phases) exhausted Croatia's recovery time; pressing worked when discipline held.
- Late goal at 0.07 xG shows ruthlessness; could have cost them dearly if Croatia's save at 77' had fallen differently.
What Croatia needed
Defended deep but lacked the recovery pace and clinical edge to punish Portugal's early misses.
- Ball recovery time (21.2s) too slow; Portugal's 13.1s dominance in transition broke defensive shape repeatedly.
- Saved six shots but scored only once—clinical defending without attacking reward compounds low 1.17 xG.
- Missed big chance at 77' (0.23 xG) in a match where one more goal changes the story entirely.