
St. Louis City 2-3 Portland Timbers: result and stats, Major League Soccer
- Daniel Edelman58'
- Rafael Navarro Leal90+1'
- 42', 48'Kristoffer Velde
- 45+3'David Da Costa
St. Louis City
Substitutions
- 45'D. Downs
426.1Jeong Sang-Bin
777.3A - 79'T. Totland
146.5S. Becher
116.5 - 79'D. Edelman
247.7F. Fall
276.5
Unused
- M. PerezM
28 - C. BrunetM
18 - M. FallD
4 - Riley LynchF
48 - C. OlivaresG
31 - J. OrozcoD
99
Substitutions
- 60'C. Bassett
176.9AEric Izoita
736.0 - 60'J. Ortiz
806.4A. Aravena
286.1 - 67'
- 75'D. Chará
216.5J. Caicedo
306.3 - 75'A. Lassiter
76.7V. Janssen
145.9 - 83'
Unused
- O. FernandezF
22 - E. MillerD
15 - H. SulteG
26
Home

OutR. BurkiConcussion
OutCelio PompeuKnee Injury
OutA. MatanLeg Injury
OutT. OstrakRed Card
Away

OutAntonyKnee Injury
OutA. BonetigShoulder Injury
OutB. ByeLeg Injury
OutZ. McGrawBack Injury
OutJ. MosqueraFoot Injury
OutT. MuseConcussion

Player of the match
Highest-rated players




xG race
25 shotsChance quality as it built up. A steep step is a big chance.
How those chances were made
Shot map
13 v 12St. Louis City shoot right, Portland Timbers left. Bigger dot = better chance.
Goal mouth
18 on target · 5 scoredWhere each shot on target crossed the line. Placement beats power.
Shot duel
Holse's 10' chance was the biggest of the match: 0,39 xG, saved.
Every shot on its minute, St. Louis City above and Portland Timbers below. The longer the bar, the bigger the chance. Faces on goals and on chances of 0,3 xG or more.
xG analytics
St. Louis City
Portland TimbersExpected goals weighs every shot by the historic conversion rate of similar chances. Higher xG means better scoring opportunities, regardless of whether they went in.
Momentum
21 swingsWhich side was on top, minute by minute. A taller bar is heavier pressure.
Match replay
91'
2-3
90' Saved Dante Polvara 0.06 xG · Regular play · Right footAverage positions
Each starter's average position on the ball, with the number of those actions inside the chip. Both sides attack left to right. Tap a player to see where they actually were.
An average, not a movement map: it says where a player's actions balanced out, not where they ran.
Passing network
Each player at his average position, sized by passes made. Lines join team-mates with 5 or more passes between them (fewer when a side made its first change early), thicker for more. Counted until each side's first substitution. Both sides attack left to right. Tap a player to isolate his links.
Most-connected pair: MacNaughton and Baumgartl, 18 passes between them.
Most-connected pair: Fory and Velde, 15 passes between them.
Tactical battle
65control35

In possession
Field tilt is each side's share of play in the final third.
Out of possession
↓ Lower is better, so the longer bar always wins. PPDA is opponent passes allowed per defensive action.
Carrying
Distances are how far the ball was moved forward, not how far anybody ran.
Beating the press
A take-on is a player going past an opponent with the ball at his feet.
Threat created
xT values where a possession reached; VAEP values every action by how much it shifted the chance of a goal.
Tempo
An attack is direct when it moves upfield quickly rather than through many passes.
The moment that decided it
The goal that swung the win probability the most. Press play to replay the move, touch by touch.
- Score
- 0–0→0–1
- Portland Timbers win chance
- 21%→59%
- xG of the shot
- 0.04
- Touches in the move
- 7
- 1J. Waterman›
- 2R. Hernández›
- 3J. Waterman›
- 4K. Miller›
- 5C. Bassettassist›
- 6K. Velde›
- 7K. VeldeRight foot
Possession & Passing
Attack
Box & Quality
Defense & Discipline
Half by half
The same match, split at the break. Which half did each side actually win?
First half
Second half
More match stats
Attack
Passing
Duels
Defending
Match summary
Portland Timbers beat St. Louis City 3-2 at CITYPARK in the Major League Soccer. Portland Timbers led 2-0 at half-time. Scorers: Daniel Edelman (58'), Rafael Navarro Leal (90+1') for St. Louis City; Kristoffer Velde (42', 48'), David Da Costa (45+3') for Portland Timbers. Portland Timbers finished with ten men after Kamal Miller was sent off. In their last 8 meetings, St. Louis City have won 3, Portland Timbers 2, with 3 drawn. Full match stats, lineups and player ratings are all on this page.
→ Double chance: St. Louis City or draw
Why this prediction
The factors the model weighed, each split between the two sides.
Who will win?
Cast your vote!
Goal profile
This seasonHow often each side reaches a scoreline, across 34 matches each.
They score
They concede
Heaviest results
best 6-2 (H)·worst 1-4 (A)
best 6-0 (H)·worst 1-4 (H)
Venue spotlight
Head-to-headLast 10 meetings
- 10 Sept 2026
Portland Timbers2 - 2St. Louis City
Major League Soccer - 4 Feb 2026
Portland Timbers- - -St. Louis City
Friendlies Clubs - 13 Jul 2025
St. Louis City2 - 1Portland Timbers
Major League Soccer - 8 Jun 2025
Portland Timbers2 - 1St. Louis City
Major League Soccer - 5 Feb 2025
St. Louis City- - -Portland Timbers
Friendlies Clubs - 25 Aug 2024
Portland Timbers4 - 4St. Louis City
Major League Soccer
Show 4 earlier meetingsHide earlier meetings
- 10 Aug 2024
St. Louis City3 - 1Portland Timbers
Leagues Cup - 9 Jun 2024
St. Louis City0 - 0Portland Timbers
Major League Soccer - 30 Apr 2023
St. Louis City1 - 2Portland Timbers
Major League Soccer - 12 Mar 2023
Portland Timbers1 - 2St. Louis City
Major League Soccer


























