Portland Timbers vs Colorado Rapids

29 May 2025 · MLS · 2025 · Referee Chris Penso

Full time 2 – 1

Half-time: 0–1

  • Antony Alves 59’
  • Kevin Kelsy 76’
  • Đorđe Mihailović 33’

Match summary

Portland Timbers came from behind to win 2-1 at home to Colorado Rapids. Colorado Rapids led 1-0 at half-time.

Đorđe Mihailović put Colorado Rapids ahead in the 33rd minute, Antony Alves equalised in the 59th minute, and Kevin Kelsy won it in the 76th minute.

The chances backed that up: Portland Timbers created 3.65 expected goals (xG) from 23 shots to Colorado Rapids's 1.37 from 11. Felipe Mora had a penalty saved for Portland Timbers. Colorado Rapids had a player sent off.

Match stats

71% Possession 29%
23 Shots 11
9 Shots on target 3
6 Corners 3
685 Passes 276
86.0% Pass accuracy 66.3%
24 Tackles 15
11 Fouls 18
2 Yellow cards 1
0 Red cards 1
3 Offsides 2

Key events

Portland Timbers Colorado Rapids
Kick-off
Santiago MorenoShot on target
7’
Antony AlvesShot on target
22’
24’
33’
Đorđe MihailovićLeft foot shot0-1 (Colorado Rapids)
Felipe MoraMissed penaltysaved
42’
Felipe MoraShot on target
42’
Half-time0-1
46’
Theodore Ku-DiPietroShot on target
Second half underway
Antony AlvesShot on target
55’
Antony AlvesRight foot shot1-1 (Portland Timbers)
59’
Santiago MorenoShot on target
62’
Kevin KelsyFelipe Mora
64’
67’
Kevin KelsyShot on target
71’
Kevin KelsyLeft foot shot2-1 (Portland Timbers)
76’
79’
Kevin CabralSamuel Bassett
83’
89’
Calvin HarrisShot on target
Kevin KelsyShot on target
90+4’
90+7’
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 1 2 3 4 5 0’ 15’ 30’ 45’ 60’ 75’ 90’ HT 3.65 1.37 33’ Đorđe Mihailović (Colorado Rapids), 0-1 33’ 59’ Antony Alves (Portland Timbers), 1-1 59’ 76’ Kevin Kelsy (Portland Timbers), 2-1 76’ 0 1 2 3 4 5 0’ 15’ 30’ 45’ 60’ 75’ 90’ HT 3.65 1.37 33’ Đorđe Mihailović (Colorado Rapids), 0-1 Mihailović 33’ 59’ Antony Alves (Portland Timbers), 1-1 Alves 59’ 76’ Kevin Kelsy (Portland Timbers), 2-1 Kelsy 76’
Portland Timbers 3.65 xGColorado Rapids 1.37 xG Goal

Tap a goal for the scorer and score.

Shot map

Every shot and where it was taken from.

 Colorado Rapids attacking Portland Timbers attacking 
76’ Kevin Kelsy (Portland Timbers), open play, 0.91 xG, goal 42’ Felipe Mora (Portland Timbers), penalty, 0.79 xG, saved 59’ Antony Alves (Portland Timbers), open play, 0.69 xG, goal 59’ Samuel Bassett (Colorado Rapids), open play, 0.62 xG, hit the woodwork 21’ Felipe Mora (Portland Timbers), from a corner, 0.30 xG, off target 57’ Samuel Bassett (Colorado Rapids), open play, 0.23 xG, off target 33’ Đorđe Mihailović (Colorado Rapids), open play, 0.15 xG, goal 88’ Omir Fernandez (Portland Timbers), open play, 0.12 xG, blocked 90+4’ Kevin Kelsy (Portland Timbers), open play, 0.12 xG, saved 7’ Santiago Moreno (Portland Timbers), open play, 0.10 xG, saved 54’ David Pereira Da Costa (Portland Timbers), open play, 0.08 xG, blocked 29’ Antony Alves (Portland Timbers), set piece, 0.07 xG, off target 46’ Theodore Ku-DiPietro (Colorado Rapids), open play, 0.07 xG, saved 46’ Darren Yapi (Colorado Rapids), open play, 0.07 xG, off target 19’ David Ayala (Portland Timbers), open play, 0.06 xG, blocked 73’ Kamal Miller (Portland Timbers), from a corner, 0.06 xG, hit the woodwork 52’ Đorđe Mihailović (Colorado Rapids), open play, 0.05 xG, off target 71’ Kevin Kelsy (Portland Timbers), open play, 0.05 xG, saved 90+9’ Kevin Kelsy (Portland Timbers), open play, 0.05 xG, off target 39’ Andreas Maxsø (Colorado Rapids), from a corner, 0.04 xG, off target 22’ Antony Alves (Portland Timbers), open play, 0.04 xG, saved 25’ Đorđe Mihailović (Colorado Rapids), direct free kick, 0.04 xG, blocked 80’ Calvin Harris (Colorado Rapids), open play, 0.04 xG, blocked 89’ Calvin Harris (Colorado Rapids), open play, 0.03 xG, saved 62’ Santiago Moreno (Portland Timbers), set piece, 0.03 xG, saved 74’ Antony Alves (Portland Timbers), from a corner, 0.03 xG, off target 90+2’ David Ayala (Portland Timbers), open play, 0.03 xG, blocked 37’ Juan Mosquera (Portland Timbers), open play, 0.03 xG, off target 78’ Rafael Navarro (Colorado Rapids), open play, 0.03 xG, off target 55’ Antony Alves (Portland Timbers), open play, 0.02 xG, saved 62’ Antony Alves (Portland Timbers), from a corner, 0.02 xG, blocked 72’ Juan Mosquera (Portland Timbers), open play, 0.02 xG, blocked 48’ Jímer Fory (Portland Timbers), open play, 0.01 xG, blocked 50’ Santiago Moreno (Portland Timbers), open play, 0.01 xG, off target 76’ Kevin Kelsy (Portland Timbers), open play, 0.91 xG, goal 42’ Felipe Mora (Portland Timbers), penalty, 0.79 xG, saved 59’ Antony Alves (Portland Timbers), open play, 0.69 xG, goal 59’ Samuel Bassett (Colorado Rapids), open play, 0.62 xG, hit the woodwork 21’ Felipe Mora (Portland Timbers), from a corner, 0.30 xG, off target 57’ Samuel Bassett (Colorado Rapids), open play, 0.23 xG, off target 33’ Đorđe Mihailović (Colorado Rapids), open play, 0.15 xG, goal 88’ Omir Fernandez (Portland Timbers), open play, 0.12 xG, blocked 90+4’ Kevin Kelsy (Portland Timbers), open play, 0.12 xG, saved 7’ Santiago Moreno (Portland Timbers), open play, 0.10 xG, saved 54’ David Pereira Da Costa (Portland Timbers), open play, 0.08 xG, blocked 29’ Antony Alves (Portland Timbers), set piece, 0.07 xG, off target 46’ Theodore Ku-DiPietro (Colorado Rapids), open play, 0.07 xG, saved 46’ Darren Yapi (Colorado Rapids), open play, 0.07 xG, off target 73’ Kamal Miller (Portland Timbers), from a corner, 0.06 xG, hit the woodwork 19’ David Ayala (Portland Timbers), open play, 0.06 xG, blocked 52’ Đorđe Mihailović (Colorado Rapids), open play, 0.05 xG, off target 71’ Kevin Kelsy (Portland Timbers), open play, 0.05 xG, saved 90+9’ Kevin Kelsy (Portland Timbers), open play, 0.05 xG, off target 25’ Đorđe Mihailović (Colorado Rapids), direct free kick, 0.04 xG, blocked 39’ Andreas Maxsø (Colorado Rapids), from a corner, 0.04 xG, off target 22’ Antony Alves (Portland Timbers), open play, 0.04 xG, saved 74’ Antony Alves (Portland Timbers), from a corner, 0.03 xG, off target 80’ Calvin Harris (Colorado Rapids), open play, 0.04 xG, blocked 89’ Calvin Harris (Colorado Rapids), open play, 0.03 xG, saved 62’ Santiago Moreno (Portland Timbers), set piece, 0.03 xG, saved 90+2’ David Ayala (Portland Timbers), open play, 0.03 xG, blocked 37’ Juan Mosquera (Portland Timbers), open play, 0.03 xG, off target 78’ Rafael Navarro (Colorado Rapids), open play, 0.03 xG, off target 55’ Antony Alves (Portland Timbers), open play, 0.02 xG, saved 62’ Antony Alves (Portland Timbers), from a corner, 0.02 xG, blocked 72’ Juan Mosquera (Portland Timbers), open play, 0.02 xG, blocked 48’ Jímer Fory (Portland Timbers), open play, 0.01 xG, blocked 50’ Santiago Moreno (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
Crépeau
Fory
Surman
Miller
Mosquera
Ortíz 56’
Ayala
Alves 86’
Costa
Moreno 86’
Mora 64’
Colorado Rapids 4-2-3-1 Starting XI
Defreitas-Hansen
Travis
Maxsø
Murphy
Cannon
Atencio 46’
Larraz
Bassett 79’
Ku-DiPietro 65’
Mihailović 54’
Yapi 65’

Player stats

Goalkeeper1 player
90′ 3 1 19 1 – – – –
Defenders4 players
90′ 3 – – 5 – 49 1 – 1 –
90′ – – – 2 2 81 1 – – –
90′ 3 4 – 9 4 94 2 – – –
90′ 6 2 – 13 6 90 1 – – –
Midfielders6 players
Joao Ortíz Taken off
56′ – – 51 – 0.03 3 – 7 – 1 –
90′ – – 90 1 0.08 2 3 7 – 1 –
Santiago Moreno Taken off
86′ – – 37 2 0.39 – 2 4 2 2 –
90′ – 1 67 7 0.89 – – 1 – – –
Antony Alves Taken off
86′ 1 – 53 – 0.03 6 1 11 2 2 –
Diego Chará Came on as a substitute
12′ – – 12 2 0.02 1 – 1 – – –
Forwards4 players
Felipe Mora Taken off
64′ – – 2 1 1.09 0.01 – 3 1 16 –
Omir Fernandez Came on as a substitute
34′ – – 1 – 0.12 0.05 – 1 1 17 –
Kevin Kelsy Came on as a substitute
26′ 1 – 4 3 1.13 0.00 – 2 – 6 –
Ariel Lassiter Came on as a substitute
12′ – – – – – 0.04 – 1 1 3 –
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.