St. Louis City 2-3 Portland Timbers: Match Report, Goals, Stats and Ratings
MLS · Thursday 29 October 2026 · Energizer Park · referee R. Vazquez · full time
Full time: St. Louis City 2-3 Portland Timbers
Portland Timbers beat St. Louis City 3-2 in MLS on Thursday 29 October 2026 at Energizer Park. The goals: Kristoffer Velde 42', David Da Costa 45+3', Kristoffer Velde 48', Daniel Ethan Edelman 58', Rafael Navarro 90+1'. It went against Moneyball's pre-match estimate.
How Portland Timbers won it
Kristoffer Velde put Portland Timbers ahead in the 42nd minute, set up by Cole Bassett. David Da Costa made it 0-2 to Portland Timbers in the 45th minute (+3), set up by Jimer Fory. Kristoffer Velde made it 0-3 to Portland Timbers in the 48th minute, set up by David Da Costa. Daniel Ethan Edelman made it 1-3 to St. Louis City in the 58th minute, set up by Carlo Holse. Rafael Navarro made it 2-3 to St. Louis City in the 90th minute (+1), set up by Sang-bin Jeong.
It was 0-2 at half-time.
Kristoffer Velde scored twice.
Kamal Miller of Portland Timbers was sent off in the 90th minute (+6) for a second yellow card. The referee, R. Vazquez, showed 4 yellow cards: 0 to St. Louis City and 4 to Portland Timbers.
St. Louis City: Y. Damet, 3-4-1-2 · Portland Timbers: M. Cifuentes Corvillo, 4-3-3.
Moneyball's prediction against the result
The prediction missed. Moneyball's pick on the Match Board was St. Louis City Win, and on 2-3 it was wrong.
The estimate's most likely result was a St. Louis City win at 50%; a Portland Timbers win, at 26%, is what happened. Its single most likely score was 1-1 (11%).
The match had far more goals than expected: the estimate was about 3.2 goals and there were 5.
Over 2.5 goals had been put at 62%; with 5 goals the over came in, as the estimate leaned.
Both teams to score was 63%; both did, in line with the estimate.
The pre-match consensus had a St. Louis City win at 50%, the same lean as Moneyball.
Computed before kick-off from both sides' season goals and expected goals as of 2026-10-28, through a Dixon-Coles score model, and left as it was.
Why it went this way
On the day the expected goals were 1.16 for St. Louis City and 2.14 for Portland Timbers.
The run of play itself went against the pre-match reading: Moneyball expected St. Louis City to create more, and Portland Timbers did.
St. Louis City had 6 shots on target, Portland Timbers 6.
St. Louis City had 61% of the ball, but Portland Timbers took the points.
A red card changed the shape of the match, and no pre-match model can see one coming.
Where the two sides stood before this match
St. Louis City came into it with 34 MLS matches played, scoring 1.7 and conceding 1.4 a match, with 1.53 expected goals for and 1.47 against, and had won 44% of their matches.
Portland Timbers came into it with 34 MLS matches played, scoring 1.8 and conceding 1.8 a match, with 1.52 expected goals for and 1.43 against, and had won 38% of their matches.
St. Louis City vs Portland Timbers: the match in numbers
| St. Louis City | Match statistics | Portland Timbers |
|---|---|---|
| 61% | Ball possession | 39% |
| 1.16 | Expected goals (xG) | 2.14 |
| 13 | Total shots | 12 |
| 6 | Shots on target | 6 |
| 5 | Big chances | 2 |
| 444 | Total passes | 290 |
| 84% | Pass accuracy | 76% |
| 5 | Corners | 4 |
| 15 | Fouls | 12 |
| 3 | Offsides | 1 |
| 12 | Tackles | 12 |
| 3 | Saves | 4 |
| 0 | Yellow cards | 5 |
| 0 | Red cards | 1 |
Team statistics from Sportmonks.
Player ratings and man of the match
Man of the match: David Da Costa (Portland Timbers), rated 8.8 by Sportmonks, with 1 goal, 1 assist.
St. Louis City
- Sang-bin Jeong 8.0 1 assist
- Carlo Holse 8.0 1 assist
- Rafael Navarro 7.4 1 goal
- Daniel Ethan Edelman 7.3 1 goal
- Conrad Wallem 7.0
Portland Timbers
- David Da Costa 8.8 1 goal, 1 assist
- Kristoffer Velde 8.7 2 goals
- Jimer Fory 7.2 1 assist
- Diego Chará 7.0
- Alexander Aravena 6.8
The lowest-rated starter was Lukas MacNaughton at 6.3. Ratings run from 0 to 10; around 7.0 is a solid match.
What comes next
- St. Louis City: St. Louis City vs Los Angeles FC Tuesday 24 November 2026 · MLS
- Portland Timbers: Dallas vs Portland Timbers Saturday 21 November 2026 · MLS
Each preview has Moneyball's estimate for the next match, published before kick-off and marked against the result afterwards, as this one is.
Questions about St. Louis City vs Portland Timbers
What was the score in St. Louis City vs Portland Timbers?
St. Louis City 2-3 Portland Timbers (half-time 0-2), MLS, Thursday 29 October 2026.
Who scored in St. Louis City vs Portland Timbers?
Kristoffer Velde 42', David Da Costa 45+3', Kristoffer Velde 48', Daniel Ethan Edelman 58', Rafael Navarro 90+1'.
Did Moneyball predict St. Louis City vs Portland Timbers correctly?
The prediction missed. Moneyball's pick on the Match Board was St. Louis City Win, and on 2-3 it was wrong.
Who was man of the match in St. Louis City vs Portland Timbers?
David Da Costa, rated 8.8 by Sportmonks.
Who refereed St. Louis City vs Portland Timbers?
R. Vazquez.
Every match, before and after
Moneyball writes a preview with its estimate before every match of Europe's top five leagues and the European cups, then marks it against the result, hits and misses alike.
Moneyball is a football statistics site. No model predicts football reliably: every figure is an estimate.