Portland Timbers vs St. Louis City

8 June 2025 · MLS · 2025 · Referee Malik Badawi

Full time 2 – 1

Half-time: 0–0

  • Antony Alves 55’
  • David Ayala 90+1’
  • Akil Watts 50’

Match summary

Portland Timbers came from behind to win 2-1 at home to St. Louis City, with the winner arriving in stoppage time. It was goalless at half-time.

Akil Watts put St. Louis City ahead in the 50th minute, Antony Alves equalised in the 55th minute, and David Ayala won it from a corner in stoppage time.

St. Louis City can feel hard done by, creating 2.98 expected goals (xG) from 18 shots to Portland Timbers's 1.73 from 18.

Match stats

51% Possession 49%
18 Shots 18
7 Shots on target 8
7 Corners 4
460 Passes 440
87.4% Pass accuracy 83.6%
9 Tackles 25
12 Fouls 8
3 Yellow cards 2
0 Offsides 4

Key events

Portland Timbers St. Louis City
P. NevilleManagerArgument
0’
Kick-off
13’
20’
Simon BecherShot on target
27’
Akil WattsShot on target
27’
João KlaussShot on target
30’
Celio PompeuShot on target
Santiago MorenoShot on target
40’
45’
Half-time0-0
48’
Marcel HartelShot on target
Jímer ForyShot on target
49’
Second half underway
50’
Akil WattsRight foot shot0-1 (St. Louis City)
50’
Akil WattsShot on target
Antony AlvesRight foot shot1-1 (Portland Timbers)
55’
Cristhian ParedesJoao Ortíz
63’
64’
Jake Girdwood-ReichAlfredo Morales
67’
David Pereira Da CostaShot on target
70’
Santiago MorenoShot on target
70’
73’
Joseph ZalinskyTomas Totland
Omir FernandezShot on target
86’
90’
Xande SilvaShot on target
David AyalaLeft foot shot2-1 (Portland Timbers)
90+1’
90+4’
Felipe MoraTime wasting
90+8’
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 3.0 3.5 0’ 15’ 30’ 45’ 60’ 75’ 90’ HT 1.73 2.98 50’ Akil Watts (St. Louis City), 0-1 50’ 55’ Antony Alves (Portland Timbers), 1-1 55’ 90+1’ David Ayala (Portland Timbers), 2-1 90+1’ 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 0’ 15’ 30’ 45’ 60’ 75’ 90’ HT 1.73 2.98 50’ Akil Watts (St. Louis City), 0-1 Watts 50’ 55’ Antony Alves (Portland Timbers), 1-1 Alves 55’ 90+1’ David Ayala (Portland Timbers), 2-1 Ayala 90+1’
Portland Timbers 1.73 xGSt. Louis City 2.98 xG Goal

Tap a goal for the scorer and score.

Shot map

Every shot and where it was taken from.

 St. Louis City attacking Portland Timbers attacking 
27’ Marcel Hartel (St. Louis City), open play, 0.53 xG, off target 79’ Antony Alves (Portland Timbers), open play, 0.45 xG, off target 27’ João Klauss (St. Louis City), open play, 0.36 xG, saved 16’ João Klauss (St. Louis City), open play, 0.35 xG, off target 57’ Kevin Kelsy (Portland Timbers), open play, 0.35 xG, off target 50’ Akil Watts (St. Louis City), open play, 0.33 xG, goal 27’ Akil Watts (St. Louis City), open play, 0.30 xG, saved 47’ João Klauss (St. Louis City), open play, 0.22 xG, off target 36’ Simon Becher (St. Louis City), open play, 0.19 xG, off target 50’ Simon Becher (St. Louis City), open play, 0.16 xG, blocked 50’ Akil Watts (St. Louis City), open play, 0.14 xG, saved 70’ David Pereira Da Costa (Portland Timbers), open play, 0.14 xG, saved 90+1’ David Ayala (Portland Timbers), from a corner, 0.11 xG, goal 47’ Joao Ortíz (Portland Timbers), open play, 0.10 xG, blocked 90+5’ Timo Baumgartl (St. Louis City), set piece, 0.10 xG, off target 90’ Antony Alves (Portland Timbers), open play, 0.10 xG, blocked 86’ Felipe Mora (Portland Timbers), open play, 0.09 xG, blocked 59’ Juan Mosquera (Portland Timbers), open play, 0.07 xG, off target 20’ Simon Becher (St. Louis City), open play, 0.06 xG, saved 54’ Santiago Moreno (Portland Timbers), open play, 0.05 xG, blocked 27’ Marcel Hartel (St. Louis City), open play, 0.05 xG, off target 70’ Santiago Moreno (Portland Timbers), open play, 0.05 xG, saved 84’ Timo Baumgartl (St. Louis City), from a corner, 0.05 xG, off target 49’ Jímer Fory (Portland Timbers), open play, 0.04 xG, saved 66’ Cristhian Paredes (Portland Timbers), open play, 0.04 xG, blocked 3’ Akil Watts (St. Louis City), open play, 0.04 xG, blocked 55’ Antony Alves (Portland Timbers), open play, 0.03 xG, goal 90’ Xande Silva (St. Louis City), open play, 0.04 xG, saved 86’ Omir Fernandez (Portland Timbers), from a corner, 0.03 xG, saved 30’ Celio Pompeu (St. Louis City), open play, 0.03 xG, saved 70’ David Ayala (Portland Timbers), open play, 0.02 xG, blocked 40’ Santiago Moreno (Portland Timbers), open play, 0.02 xG, saved 48’ Marcel Hartel (St. Louis City), open play, 0.02 xG, saved 41’ David Ayala (Portland Timbers), open play, 0.02 xG, off target 90+9’ Xande Silva (St. Louis City), set piece, 0.02 xG, blocked 19’ Jímer Fory (Portland Timbers), open play, 0.01 xG, off target 27’ Marcel Hartel (St. Louis City), open play, 0.53 xG, off target 79’ Antony Alves (Portland Timbers), open play, 0.45 xG, off target 27’ João Klauss (St. Louis City), open play, 0.36 xG, saved 16’ João Klauss (St. Louis City), open play, 0.35 xG, off target 57’ Kevin Kelsy (Portland Timbers), open play, 0.35 xG, off target 50’ Akil Watts (St. Louis City), open play, 0.33 xG, goal 27’ Akil Watts (St. Louis City), open play, 0.30 xG, saved 47’ João Klauss (St. Louis City), open play, 0.22 xG, off target 36’ Simon Becher (St. Louis City), open play, 0.19 xG, off target 50’ Simon Becher (St. Louis City), open play, 0.16 xG, blocked 50’ Akil Watts (St. Louis City), open play, 0.14 xG, saved 70’ David Pereira Da Costa (Portland Timbers), open play, 0.14 xG, saved 90+1’ David Ayala (Portland Timbers), from a corner, 0.11 xG, goal 47’ Joao Ortíz (Portland Timbers), open play, 0.10 xG, blocked 90+5’ Timo Baumgartl (St. Louis City), set piece, 0.10 xG, off target 90’ Antony Alves (Portland Timbers), open play, 0.10 xG, blocked 86’ Felipe Mora (Portland Timbers), open play, 0.09 xG, blocked 59’ Juan Mosquera (Portland Timbers), open play, 0.07 xG, off target 20’ Simon Becher (St. Louis City), open play, 0.06 xG, saved 54’ Santiago Moreno (Portland Timbers), open play, 0.05 xG, blocked 70’ Santiago Moreno (Portland Timbers), open play, 0.05 xG, saved 27’ Marcel Hartel (St. Louis City), open play, 0.05 xG, off target 84’ Timo Baumgartl (St. Louis City), from a corner, 0.05 xG, off target 66’ Cristhian Paredes (Portland Timbers), open play, 0.04 xG, blocked 3’ Akil Watts (St. Louis City), open play, 0.04 xG, blocked 49’ Jímer Fory (Portland Timbers), open play, 0.04 xG, saved 90’ Xande Silva (St. Louis City), open play, 0.04 xG, saved 55’ Antony Alves (Portland Timbers), open play, 0.03 xG, goal 86’ Omir Fernandez (Portland Timbers), from a corner, 0.03 xG, saved 30’ Celio Pompeu (St. Louis City), open play, 0.03 xG, saved 70’ David Ayala (Portland Timbers), open play, 0.02 xG, blocked 40’ Santiago Moreno (Portland Timbers), open play, 0.02 xG, saved 48’ Marcel Hartel (St. Louis City), open play, 0.02 xG, saved 41’ David Ayala (Portland Timbers), open play, 0.02 xG, off target 90+9’ Xande Silva (St. Louis City), set piece, 0.02 xG, blocked 19’ Jímer Fory (Portland Timbers), open play, 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

Portland Timbers 4-2-3-1 Starting XI
Pantemis
Fory
Župarić
Miller
Mosquera 90’
Ortíz 63’
Ayala
Alves
Costa 81’
Moreno 90’
Kelsy 63’
St. Louis City 4-2-3-1 Starting XI
Bürki
Reid
Kessler
Baumgartl
Totland 73’
Morales 64’
Watts
Pompeu 88’
Hartel
Becher 88’
Klauss 64’

Player stats

Goalkeeper1 player
90′ 7 1 30 – – – – –
Defenders4 players
Juan Mosquera Taken off
89′ – – – 2 1 31 1 – – –
Dario Župarić
90′ 1 – – 3 2 53 2 – – –
90′ – – – 3 3 63 1 – – –
90′ 1 1 – 4 2 41 3 – 1 –
Midfielders6 players
Joao Ortíz Taken off
63′ – – 42 1 0.01 1 1 2 – – –
90′ 1 – 61 1 0.29 2 3 7 – 2 –
Santiago Moreno Taken off
89′ – 1 29 3 0.23 2 – 4 2 1 –
David Pereira Da Costa Taken off
81′ – – 35 – 0.04 – – 1 1 1 –
90′ 1 – 38 2 0.19 – – 8 – 1 –
Cristhian Paredes Came on as a substitute
27′ – – 8 1 0.05 – – 1 – – –
Forwards3 players
Kevin Kelsy Taken off
63′ – – 1 – 0.35 0.02 – 4 1 7 –
Felipe Mora Came on as a substitute
27′ – – 1 – 0.09 0.02 2 1 – 9 –
Omir Fernandez Came on as a substitute
9′ – – 1 1 0.03 0.03 – – – 7 –
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.