St. Louis City vs Portland Timbers

29 October 2026 · MLS · 2026 · Referee Rubiel Vazquez

Full time 2 – 3

Half-time: 0–2

  • Daniel Edelman 58’
  • Jeong Sang-bin 90+1’
  • Kristoffer Velde 42’, 48’
  • David Pereira Da Costa 45+3’

Match summary

Portland Timbers took a 3-2 win at St. Louis City. Portland Timbers led 2-0 at half-time.

In the first half, Kristoffer Velde put Portland Timbers ahead in the 42nd minute and David Pereira Da Costa made it 0-2 in first-half stoppage time. In the second half, Velde made it 0-3 in the 48th minute, Daniel Edelman pulled one back to make it 1-3 with a header in the 58th minute, and Jeong Sang-bin made it 2-3 in stoppage time.

St. Louis City can feel hard done by, creating 1.67 expected goals (xG) from 13 shots to Portland Timbers's 0.87 from 12. Portland Timbers had a player sent off.

Match stats

61% Possession 39%
13 Shots 12
6 Shots on target 6
5 Corners 4
70 Attacks 73
51 Dangerous attacks 38
444 Passes 290
84.0% Pass accuracy 75.9%
12 Tackles 12
15 Fouls 12
0 Yellow cards 5
0 Red cards 1
3 Offsides 1

Key events

St. Louis City Portland Timbers
Kick-off
6’
Corner
Carlo HolseShot on target
10’
Corner
11’
16’
Ariel LassiterShot on target
16’
Corner
Corner
36’
38’
Corner
42’
Kristoffer VeldeRight foot shot0-1 (Portland Timbers)
45+3’
David Pereira Da CostaRight foot shot0-2 (Portland Timbers)
Half-time0-2
Tomas TotlandShot on target
47’
48’
Kristoffer VeldeRight foot shot0-3 (Portland Timbers)
48’
David Pereira Da CostaShot on target
Second half underway
Corner
53’
Corner
55’
Daniel EdelmanHeader1-3 (St. Louis City)
58’
62’
71’
Corner
73’
79’
Alexander AravenaShot on target
79’
Corner
84’
88’
Ian SmithTime wasting
Dante PolvaraShot on target
89’
Jeong Sang-binRight foot shot2-3 (St. Louis City)
90+1’
90+6’
Kamal MillerSecond yellowTime wasting
Full-time2-3

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 0’ 15’ 30’ 45’ 60’ 75’ 90’ HT 1.67 0.87 42’ Kristoffer Velde (Portland Timbers), 0-1 42’ 45+3’ David Pereira Da Costa (Portland Timbers), 0-2 45+3’ 48’ Kristoffer Velde (Portland Timbers), 0-3 48’ 58’ Daniel Edelman (St. Louis City), 1-3 58’ 90+1’ Jeong Sang-bin (St. Louis City), 2-3 90+1’ 0.0 0.5 1.0 1.5 2.0 0’ 15’ 30’ 45’ 60’ 75’ 90’ HT 1.67 0.87 42’ Kristoffer Velde (Portland Timbers), 0-1 Velde 42’ 45+3’ David Pereira Da Costa (Portland Timbers), 0-2 Da Costa 45+3’ 48’ Kristoffer Velde (Portland Timbers), 0-3 Velde 48’ 58’ Daniel Edelman (St. Louis City), 1-3 Edelman 58’ 90+1’ Jeong Sang-bin (St. Louis City), 2-3 Sang-bin 90+1’
St. Louis City 1.67 xGPortland Timbers 0.87 xG Goal

Tap a goal for the scorer and score.

Shot map

Every shot and where it was taken from.

 Portland Timbers attacking St. Louis City attacking 
10’ Carlo Holse (St. Louis City), open play, 0.39 xG, saved 58’ Daniel Edelman (St. Louis City), open play, 0.34 xG, goal 19’ Damion Downs (St. Louis City), open play, 0.24 xG, blocked 36’ Rafael Navarro (St. Louis City), from a corner, 0.20 xG, off target 48’ David Pereira Da Costa (Portland Timbers), open play, 0.16 xG, goal 90+3’ Alexander Aravena (Portland Timbers), open play, 0.16 xG, off target 47’ Tomas Totland (St. Louis City), open play, 0.15 xG, saved 78’ Tomas Totland (St. Louis City), open play, 0.11 xG, off target 40’ Cole Bassett (Portland Timbers), open play, 0.09 xG, blocked 48’ David Pereira Da Costa (Portland Timbers), open play, 0.09 xG, saved 80’ José Caicedo (Portland Timbers), from a corner, 0.09 xG, off target 89’ Dante Polvara (St. Louis City), open play, 0.07 xG, saved 62’ Ariel Lassiter (Portland Timbers), open play, 0.07 xG, blocked 54’ Lukas MacNaughton (St. Louis City), from a corner, 0.06 xG, off target 48’ Kristoffer Velde (Portland Timbers), open play, 0.06 xG, goal 79’ Alexander Aravena (Portland Timbers), open play, 0.06 xG, saved 16’ Ariel Lassiter (Portland Timbers), open play, 0.04 xG, saved 42’ Kristoffer Velde (Portland Timbers), open play, 0.04 xG, goal 53’ Rafael Navarro (St. Louis City), set piece, 0.03 xG, off target 36’ Damion Downs (St. Louis City), open play, 0.02 xG, blocked 59’ Joao Ortíz (Portland Timbers), open play, 0.02 xG, off target 74’ Daniel Edelman (St. Louis City), from a corner, 0.02 xG, blocked 53’ Lukas MacNaughton (St. Louis City), set piece, 0.02 xG, blocked 90+1’ Jeong Sang-bin (St. Louis City), open play, 0.02 xG, goal 38’ Joel Waterman (Portland Timbers), from a corner, 0.01 xG, off target 10’ Carlo Holse (St. Louis City), open play, 0.39 xG, saved 58’ Daniel Edelman (St. Louis City), open play, 0.34 xG, goal 19’ Damion Downs (St. Louis City), open play, 0.24 xG, blocked 36’ Rafael Navarro (St. Louis City), from a corner, 0.20 xG, off target 90+3’ Alexander Aravena (Portland Timbers), open play, 0.16 xG, off target 47’ Tomas Totland (St. Louis City), open play, 0.15 xG, saved 48’ David Pereira Da Costa (Portland Timbers), open play, 0.16 xG, goal 78’ Tomas Totland (St. Louis City), open play, 0.11 xG, off target 40’ Cole Bassett (Portland Timbers), open play, 0.09 xG, blocked 80’ José Caicedo (Portland Timbers), from a corner, 0.09 xG, off target 48’ David Pereira Da Costa (Portland Timbers), open play, 0.09 xG, saved 89’ Dante Polvara (St. Louis City), open play, 0.07 xG, saved 62’ Ariel Lassiter (Portland Timbers), open play, 0.07 xG, blocked 54’ Lukas MacNaughton (St. Louis City), from a corner, 0.06 xG, off target 48’ Kristoffer Velde (Portland Timbers), open play, 0.06 xG, goal 79’ Alexander Aravena (Portland Timbers), open play, 0.06 xG, saved 16’ Ariel Lassiter (Portland Timbers), open play, 0.04 xG, saved 42’ Kristoffer Velde (Portland Timbers), open play, 0.04 xG, goal 53’ Rafael Navarro (St. Louis City), set piece, 0.03 xG, off target 59’ Joao Ortíz (Portland Timbers), open play, 0.02 xG, off target 36’ Damion Downs (St. Louis City), open play, 0.02 xG, blocked 74’ Daniel Edelman (St. Louis City), from a corner, 0.02 xG, blocked 53’ Lukas MacNaughton (St. Louis City), set piece, 0.02 xG, blocked 90+1’ Jeong Sang-bin (St. Louis City), open play, 0.02 xG, goal 38’ Joel Waterman (Portland Timbers), from a corner, 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

St. Louis City 3-4-1-2 Starting XI
Lundt
MacNaughton
Baumgartl
Totland 79’
Polvara
Durkin
Edelman 79’
Wallem
Holse
Downs 46’
Navarro
Portland Timbers 4-3-3 Starting XI
Pantemis
Fory 67’
Waterman
Miller
Hernández
Ortíz 60’
Chará 75’
Bassett 60’
Lassiter 75’
Velde 2 83’
Costa

Player stats

Goalkeeper1 player
98′ 3 3 31 – – – – –
Defenders4 players
98′ 1 – – 4 2 67 5 – – –
98′ – 2 – 2 2 66 2 – – –
Tomas Totland Taken off
79′ 1 1 – 4 1 20 2 – – –
Fallou Fall Came on as a substitute
19′ 1 – – 1 – 10 – – – –
Midfielders5 players
98′ – – 50 – – – 2 1 1 – –
98′ – – 45 3 – 2 1 4 2 1 –
98′ – 1 36 1 – 2 1 5 – 1 –
Daniel Edelman Taken off
79′ 1 – 21 1 – 1 1 4 – 2 –
98′ – 1 43 4 – 4 – 6 1 1 –
Forwards4 players
Damion Downs Taken off
45′ – – 2 – 0.26 – – 1 – 8 –
98′ – – 2 – 0.23 – 2 10 6 28 –
Jeong Sang-bin Came on as a substitute
53′ 1 – 1 1 0.02 – 1 2 1 11 –
Simon Becher Came on as a substitute
19′ – – – – – – – – – 4 –
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 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 and odds from football-data.co.uk.