St. Louis City vs Portland Timbers

13 July 2025 · MLS · 2025 · Referee Ricardo Montero

Full time 2 – 1

Half-time: 0–1

  • Marcel Hartel 54’, 67’
  • David Pereira Da Costa 19’

Match summary

St. Louis City came from behind to win 2-1 at home to Portland Timbers. Portland Timbers led 1-0 at half-time.

David Pereira Da Costa put Portland Timbers ahead in the 19th minute, Marcel Hartel equalised in the 54th minute, and Hartel won it with a header in the 67th minute.

The chances backed that up: St. Louis City created 2.08 expected goals (xG) from 20 shots to Portland Timbers's 1.26 from 10.

Match stats

53% Possession 47%
20 Shots 10
9 Shots on target 4
4 Corners 3
539 Passes 483
88.3% Pass accuracy 88.6%
17 Tackles 12
10 Fouls 9
2 Yellow cards 4
3 Offsides 0

Key events

St. Louis City Portland Timbers
Kick-off
Tomas TotlandShot on target
6’
19’
David Pereira Da CostaRight foot shot0-1 (Portland Timbers)
Cedric TeuchertShot on target
28’
Cedric TeuchertShot on target
37’
Tomáš OstrákShot on target
40’
41’
David Pereira Da CostaShot on target
Conrad WallemShot on target
43’
Half-time0-1
Second half underway
48’
David Pereira Da CostaShot on target
Marcel HartelLeft foot shot1-1 (St. Louis City)
54’
59’
64’
Marcel HartelHeader2-1 (St. Louis City)
67’
Eduard LöwenShot on target
67’
75’
Gage GuerraDario Župarić
75’
Cristhian ParedesDavid Ayala
77’
79’
80’
David Pereira Da CostaShot on target
Akil WattsCedric Teuchert
82’
João KlaussShot on target
90’
90+2’
90+3’
Full-time2-1

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 2.5 0’ 15’ 30’ 45’ 60’ 75’ 90’ HT 2.08 1.26 19’ David Pereira Da Costa (Portland Timbers), 0-1 19’ 54’ Marcel Hartel (St. Louis City), 1-1 54’ 67’ Marcel Hartel (St. Louis City), 2-1 67’ 0.0 0.5 1.0 1.5 2.0 2.5 0’ 15’ 30’ 45’ 60’ 75’ 90’ HT 2.08 1.26 19’ David Pereira Da Costa (Portland Timbers), 0-1 Da Costa 19’ 54’ Marcel Hartel (St. Louis City), 1-1 Hartel 54’ 67’ Marcel Hartel (St. Louis City), 2-1 Hartel 67’
St. Louis City 2.08 xGPortland Timbers 1.26 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 
48’ David Pereira Da Costa (Portland Timbers), open play, 0.72 xG, saved 67’ Simon Becher (St. Louis City), set piece, 0.44 xG, off target 54’ Marcel Hartel (St. Louis City), open play, 0.30 xG, goal 28’ Cedric Teuchert (St. Louis City), open play, 0.23 xG, saved 41’ David Pereira Da Costa (Portland Timbers), open play, 0.21 xG, saved 6’ Tomas Totland (St. Louis City), open play, 0.20 xG, saved 67’ Marcel Hartel (St. Louis City), set piece, 0.11 xG, goal 53’ Joshua Yaro (St. Louis City), from a corner, 0.10 xG, off target 54’ João Klauss (St. Louis City), open play, 0.10 xG, blocked 70’ Simon Becher (St. Louis City), open play, 0.08 xG, off target 37’ Cedric Teuchert (St. Louis City), open play, 0.07 xG, saved 46’ Celio Pompeu (St. Louis City), open play, 0.06 xG, off target 50’ Tomáš Ostrák (St. Louis City), open play, 0.06 xG, off target 43’ Conrad Wallem (St. Louis City), open play, 0.05 xG, saved 63’ Santiago Moreno (Portland Timbers), open play, 0.06 xG, blocked 80’ David Pereira Da Costa (Portland Timbers), open play, 0.06 xG, saved 4’ Cedric Teuchert (St. Louis City), open play, 0.05 xG, off target 19’ David Pereira Da Costa (Portland Timbers), open play, 0.05 xG, goal 67’ Eduard Löwen (St. Louis City), direct free kick, 0.04 xG, saved 75’ David Ayala (Portland Timbers), open play, 0.05 xG, blocked 76’ Gage Guerra (Portland Timbers), from a corner, 0.05 xG, off target 90+5’ Eduard Löwen (St. Louis City), open play, 0.04 xG, off target 30’ Cedric Teuchert (St. Louis City), from a corner, 0.04 xG, blocked 40’ Tomáš Ostrák (St. Louis City), open play, 0.03 xG, saved 81’ Eduard Löwen (St. Louis City), open play, 0.03 xG, off target 89’ Juan Mosquera (Portland Timbers), from a corner, 0.03 xG, off target 42’ Joao Ortíz (Portland Timbers), open play, 0.03 xG, blocked 90’ João Klauss (St. Louis City), open play, 0.02 xG, saved 11’ Santiago Moreno (Portland Timbers), open play, 0.02 xG, blocked 9’ Conrad Wallem (St. Louis City), open play, 0.02 xG, off target 48’ David Pereira Da Costa (Portland Timbers), open play, 0.72 xG, saved 67’ Simon Becher (St. Louis City), set piece, 0.44 xG, off target 54’ Marcel Hartel (St. Louis City), open play, 0.30 xG, goal 28’ Cedric Teuchert (St. Louis City), open play, 0.23 xG, saved 41’ David Pereira Da Costa (Portland Timbers), open play, 0.21 xG, saved 6’ Tomas Totland (St. Louis City), open play, 0.20 xG, saved 67’ Marcel Hartel (St. Louis City), set piece, 0.11 xG, goal 53’ Joshua Yaro (St. Louis City), from a corner, 0.10 xG, off target 54’ João Klauss (St. Louis City), open play, 0.10 xG, blocked 70’ Simon Becher (St. Louis City), open play, 0.08 xG, off target 37’ Cedric Teuchert (St. Louis City), open play, 0.07 xG, saved 46’ Celio Pompeu (St. Louis City), open play, 0.06 xG, off target 50’ Tomáš Ostrák (St. Louis City), open play, 0.06 xG, off target 63’ Santiago Moreno (Portland Timbers), open play, 0.06 xG, blocked 80’ David Pereira Da Costa (Portland Timbers), open play, 0.06 xG, saved 43’ Conrad Wallem (St. Louis City), open play, 0.05 xG, saved 19’ David Pereira Da Costa (Portland Timbers), open play, 0.05 xG, goal 4’ Cedric Teuchert (St. Louis City), open play, 0.05 xG, off target 67’ Eduard Löwen (St. Louis City), direct free kick, 0.04 xG, saved 75’ David Ayala (Portland Timbers), open play, 0.05 xG, blocked 76’ Gage Guerra (Portland Timbers), from a corner, 0.05 xG, off target 90+5’ Eduard Löwen (St. Louis City), open play, 0.04 xG, off target 30’ Cedric Teuchert (St. Louis City), from a corner, 0.04 xG, blocked 40’ Tomáš Ostrák (St. Louis City), open play, 0.03 xG, saved 81’ Eduard Löwen (St. Louis City), open play, 0.03 xG, off target 89’ Juan Mosquera (Portland Timbers), from a corner, 0.03 xG, off target 42’ Joao Ortíz (Portland Timbers), open play, 0.03 xG, blocked 90’ João Klauss (St. Louis City), open play, 0.02 xG, saved 11’ Santiago Moreno (Portland Timbers), open play, 0.02 xG, blocked 9’ Conrad Wallem (St. Louis City), open play, 0.02 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 4-2-3-1 Starting XI
Bürki
Girdwood-Reich
Yaro
Orozco 90’
Totland
Ostrák 66’
Wallem
Pompeu 67’
Teuchert 82’
Hartel 2
Klauss
Portland Timbers 3-4-2-1 Starting XI
Crépeau
Župarić 75’
Surman
Miller
Fory 46’
Ortíz 65’
Ayala 75’
Mosquera
Costa
Moreno 65’
Kelsy

Player stats

Goalkeeper1 player
90′ 3 1 31 – – – – –
Defenders4 players
90′ – 1 – 1 1 27 1 – – –
90′ 5 – – 11 6 60 1 – – –
Joshua Yaro
90′ 1 3 – 4 3 53 – – – –
Jaziel Orozco Taken off
89′ 2 – – 6 2 54 2 – – –
Midfielders7 players
Tomáš Ostrák Taken off
66′ – – 66 1 0.06 2 1 3 1 1 –
90′ – 1 82 3 0.11 1 – 4 2 1 –
Cedric Teuchert Taken off
82′ – – 29 – 0.09 1 – 3 – 1 –
90′ 2 – 49 7 0.57 – – 2 1 1 –
Celio Pompeu Taken off
67′ – – 27 1 0.18 4 1 8 – 2 –
Eduard Löwen Came on as a substitute
24′ – – 24 – 0.07 1 – 1 – – –
Akil Watts Came on as a substitute
8′ – – 3 – 0.00 – – – – – –
Forwards2 players
90′ – – 2 1 0.12 0.61 3 – – 30 –
Simon Becher Came on as a substitute
23′ – – 2 – 0.52 0.00 – 1 – 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. Referee data before 2025/26 from the Transfermarkt datasets project.