Skip to MLS data
The Sporting Page Real Analysis. Not Corporate
The Sporting Page
Loading scores…
Connecting to scores…
← Soccer newsMLS · 2026

Portland Timbers vs Real Salt Lake

Regular Season

Saturday, Jul 25, 2026 · 10:30 pm EDT

2 – 1FinalFT

Match winner: Portland Timbers

Providence Park

Checked Nov 4, 1:38 am ESTRefresh match

Match statistics

Values retain the source’s display and precision. Some source rows labeled % are supplied as decimal ratios; no percentage conversion is inferred.

Supplied statistics for this match only.
StatisticPortland TimbersReal Salt Lake
Fouls1213
Yellow Cards21
Red Cards01
Offsides42
Corner Kicks145
Saves14
Possession61.238.8
SHOTS226
ON GOAL62
On Target %0.30.3
Penalty Goals00
Penalty Kicks Taken00
Accurate Passes465264
Passes526340
Pass Completion %0.90.8
Accurate Crosses111
Crosses3814
Cross %0.30.1
Long Balls3265
Accurate Long Balls1930
Long Balls %0.60.5
Blocked Shots80
Effective Tackles713
Tackles1217
Tackle %0.60.8
Interceptions85
Effective Clearances2642
Clearances2642

Key events

  1. —
    Kickoff

    First Half begins.

  2. 10'
    Yellow Card

    Cole Bassett (Portland Timbers) is shown the yellow card for a bad foul.

  3. 18'
    Goal

    Goal! Portland Timbers 0, Real Salt Lake 1. Juan Manuel Sanabria (Real Salt Lake) left footed shot from the left side of the box to the bottom right corner. Assisted by Morgan Guilavogui.

  4. 33'
    Start Delay
  5. 34'
    End Delay
  6. 34'
    Red Card

    Morgan Guilavogui (Real Salt Lake) is shown the red card for violent conduct.

  7. 41'
    Yellow Card

    Diego Chará (Portland Timbers) is shown the yellow card for a bad foul.

  8. 42'
    Start Delay

    Delay in match because of an injury Noel Caliskan (Real Salt Lake).

  9. 42'
    Start Delay
  10. 43'
    End Delay

    Delay over. They are ready to continue.

  11. 43'
    End Delay
  12. 45'+7'
    Halftime

    First Half ends, Portland Timbers 0, Real Salt Lake 1.

  13. 45'
    Start 2nd Half
  14. 55'
    Yellow Card

    Sergi Solans (Real Salt Lake) is shown the yellow card for a bad foul.

  15. 56'
    Goal - Header

    Goal! Portland Timbers 1, Real Salt Lake 1. Felipe Mora (Portland Timbers) header from the centre of the box to the top left corner. Assisted by Ariel Lassiter with a cross following a corner.

  16. 57'
    Substitution

    Substitution, Portland Timbers. Antony replaces Ariel Lassiter.

  17. 58'
    Substitution

    Substitution, Real Salt Lake. Samuel Junqua replaces DeAndre Yedlin.

  18. 67'
    Goal - Header

    Goal! Portland Timbers 2, Real Salt Lake 1. Felipe Mora (Portland Timbers) header from very close range to the bottom right corner. Assisted by Kristoffer Velde with a cross following a corner.

  19. 72'
    Substitution

    Substitution, Portland Timbers. José Caicedo replaces Diego Chará.

  20. 72'
    Substitution

    Substitution, Portland Timbers. Alexander Aravena replaces Felipe Mora.

  21. 74'
    Substitution

    Substitution, Real Salt Lake. Victor Olatunji replaces Sergi Solans.

  22. 74'
    Substitution

    Substitution, Real Salt Lake. Saba Lobjanidze replaces Diego Luna.

  23. 74'
    Substitution

    Substitution, Real Salt Lake. Juan Jose Arias replaces Lukas Engel.

  24. 85'
    Substitution

    Substitution, Real Salt Lake. Alexandros Katranis replaces Juan Manuel Sanabria.

  25. 86'
    Substitution

    Substitution, Portland Timbers. Joao Ortiz replaces Cole Bassett.

  26. 90'+7'
    End Regular Time

    Second Half ends, Portland Timbers 2, Real Salt Lake 1.

Lineups

Players stay with their supplied roster club. Other listed players may be unused; App records source appearances, not the number of names listed. An own goal is credited in the event as supplied.

Portland TimbersFormation 4-1-4-1

Starting lineup

PlayerPosAppGAOGYCRC
41James PantemisG100000
4Kamal MillerCD-L100000
20Finn SurmanCD-R100000
21Diego CharáDM100010
27Jimer ForyLB100000
5Brandon ByeRB100000
10David Da CostaCM-L100000
17Cole BassettCM-R100010
99Kristoffer VeldeLM101000
7Ariel LassiterRM101000
9Felipe MoraF120000

Other listed players

PlayerPosAppGAOGYCRC
23Ian SmithSUB000000
30José CaicedoSUB100000
80Joao OrtizSUB100000
11AntonySUB100000
28Alexander AravenaSUB100000
25Trey MuseSUB000000
15Eric MillerSUB000000
6Alex BonetigSUB000000
16Sawyer JuraSUB000000

Real Salt LakeFormation 3-4-3

Starting lineup

PlayerPosAppGAOGYCRC
1RafaelG100000
26Philip QuintonCD100000
4Lukas EngelCD-L100000
2DeAndre YedlinCD-R100000
92Noel CaliskanCM-L100000
6Stijn SpieringsCM-R100000
8Juan Manuel SanabriaLM110000
72Zavier GozoRM100000
22Sergi SolansF100010
9Morgan GuilavoguiCF-L101001
10Diego LunaCF-R100000

Other listed players

PlayerPosAppGAOGYCRC
98Alexandros KatranisSUB100000
27Griffin DillonSUB000000
29Samuel JunquaSUB100000
23Zach BoothSUB000000
31Mason StajduharSUB000000
7Pablo RuizSUB000000
12Saba LobjanidzeSUB100000
21Juan AriasSUB100000
17Victor OlatunjiSUB100000

Commentary

  1. —

    Lineups are announced and players are warming up.

  2. —

    First Half begins.

  3. 2'

    Corner, Portland Timbers. Conceded by Philip Quinton.

  4. 3'

    Foul by Stijn Spierings (Real Salt Lake).

  5. 3'

    Diego Chará (Portland Timbers) wins a free kick in the defensive half.

  6. 5'

    Morgan Guilavogui (Real Salt Lake) wins a free kick on the left wing.

  7. 5'

    Foul by Brandon Bye (Portland Timbers).

  8. 8'

    Corner, Real Salt Lake. Conceded by Brandon Bye.

  9. 9'

    Kristoffer Velde (Portland Timbers) wins a free kick in the defensive half.

  10. 9'

    Foul by Stijn Spierings (Real Salt Lake).

  11. 10'

    Foul by Cole Bassett (Portland Timbers).

  12. 10'

    Morgan Guilavogui (Real Salt Lake) wins a free kick on the left wing.

  13. 10'

    Cole Bassett (Portland Timbers) is shown the yellow card for a bad foul.

  14. 11'

    Offside, Real Salt Lake. DeAndre Yedlin is caught offside.

  15. 14'

    Attempt saved. Zavier Gozo (Real Salt Lake) right footed shot from outside the box is saved in the top left corner by James Pantemis (Portland Timbers). Assisted by Morgan Guilavogui.

  16. 14'

    Corner, Real Salt Lake. Conceded by James Pantemis.

  17. 14'

    Attempt missed. Noel Caliskan (Real Salt Lake) right footed shot from outside the box misses to the left following a corner.

  18. 16'

    Attempt blocked. Kristoffer Velde (Portland Timbers) right footed shot from the left side of the box is blocked. Assisted by David da Costa.

  19. 16'

    Corner, Portland Timbers. Conceded by Noel Caliskan.

  20. 16'

    Attempt missed. Felipe Mora (Portland Timbers) with an attempt from very close range is too high. Assisted by Kristoffer Velde with a cross following a corner.

  21. 18'

    Goal! Portland Timbers 0, Real Salt Lake 1. Juan Manuel Sanabria (Real Salt Lake) left footed shot from the left side of the box to the bottom right corner. Assisted by Morgan Guilavogui.

  22. 19'

    David da Costa (Portland Timbers) wins a free kick on the left wing.

  23. 19'

    Foul by Stijn Spierings (Real Salt Lake).

  24. 21'

    Foul by Cole Bassett (Portland Timbers).

  25. 21'

    Morgan Guilavogui (Real Salt Lake) wins a free kick in the defensive half.

  26. 22'

    Corner, Portland Timbers. Conceded by DeAndre Yedlin.

  27. 23'

    Kristoffer Velde (Portland Timbers) wins a free kick on the left wing.

  28. 23'

    Foul by Morgan Guilavogui (Real Salt Lake).

  29. 24'

    Corner, Portland Timbers. Conceded by Juan Manuel Sanabria.

  30. 26'

    Attempt blocked. Kristoffer Velde (Portland Timbers) right footed shot from outside the box is blocked. Assisted by David da Costa.

  31. 27'

    Attempt missed. Kristoffer Velde (Portland Timbers) right footed shot from the left side of the box misses to the left. Assisted by Diego Chará.

  32. 28'

    Kristoffer Velde (Portland Timbers) wins a free kick in the attacking half.

  33. 28'

    Foul by Stijn Spierings (Real Salt Lake).

  34. 29'

    Attempt missed. Jimer Fory (Portland Timbers) header from the centre of the box misses to the right. Assisted by Brandon Bye with a headed pass following a set piece situation.

  35. 30'

    Attempt missed. Kristoffer Velde (Portland Timbers) right footed shot from the left side of the box is close, but misses to the left. Assisted by Jimer Fory.

  36. 31'

    Jimer Fory (Portland Timbers) wins a free kick in the defensive half.

  37. 31'

    Foul by Morgan Guilavogui (Real Salt Lake).

  38. 33'

    VAR Decision: Card upgraded Morgan Guilavogui (Real Salt Lake).

  39. 34'

    Morgan Guilavogui (Real Salt Lake) is shown the red card for violent conduct.

  40. 35'

    Ariel Lassiter (Portland Timbers) wins a free kick on the right wing.

  41. 35'

    Foul by Noel Caliskan (Real Salt Lake).

  42. 37'

    Foul by Jimer Fory (Portland Timbers).

  43. 37'

    DeAndre Yedlin (Real Salt Lake) wins a free kick in the defensive half.

  44. 39'

    Attempt blocked. Felipe Mora (Portland Timbers) right footed shot from the centre of the box is blocked. Assisted by Ariel Lassiter.

  45. 40'

    Attempt blocked. Kristoffer Velde (Portland Timbers) right footed shot from the left side of the box is blocked. Assisted by Cole Bassett.

  46. 40'

    Diego Luna (Real Salt Lake) wins a free kick in the defensive half.

  47. 40'

    Foul by Brandon Bye (Portland Timbers).

  48. 41'

    Noel Caliskan (Real Salt Lake) wins a free kick in the defensive half.

  49. 41'

    Foul by Diego Chará (Portland Timbers).

  50. 41'

    Diego Chará (Portland Timbers) is shown the yellow card for a bad foul.

  51. 42'

    Delay in match because of an injury Noel Caliskan (Real Salt Lake).

  52. 43'

    Delay over. They are ready to continue.

  53. 45'

    Fourth official has announced 6 minutes of added time.

  54. 45'+1'

    Attempt saved. Cole Bassett (Portland Timbers) header from the centre of the box is saved in the centre of the goal by Rafael Cabral (Real Salt Lake). Assisted by Brandon Bye with a cross.

  55. 45'+1'

    Offside, Portland Timbers. Kristoffer Velde is caught offside.

  56. 45'+3'

    Corner, Portland Timbers. Conceded by Zavier Gozo.

  57. 45'+5'

    Corner, Real Salt Lake. Conceded by Finn Surman.

  58. 45'+6'

    Corner, Portland Timbers. Conceded by DeAndre Yedlin.

  59. 45'+7'

    First Half ends, Portland Timbers 0, Real Salt Lake 1.

  60. 45'

    Second Half begins Portland Timbers 0, Real Salt Lake 1.

  61. 46'

    Sergi Solans (Real Salt Lake) wins a free kick in the attacking half.

  62. 46'

    Foul by Finn Surman (Portland Timbers).

  63. 47'

    Attempt missed. Lukas Engel (Real Salt Lake) left footed shot from outside the box is high and wide to the left.

  64. 49'

    Attempt saved. David da Costa (Portland Timbers) left footed shot from the left side of the box is saved in the bottom left corner by Rafael Cabral (Real Salt Lake). Assisted by Kristoffer Velde.

  65. 50'

    Attempt saved. Kristoffer Velde (Portland Timbers) left footed shot from the left side of the box is saved in the bottom left corner by Rafael Cabral (Real Salt Lake). Assisted by David da Costa.

  66. 52'

    Cole Bassett (Portland Timbers) hits the right post with a right footed shot from outside the box. Assisted by Diego Chará with a headed pass.

  67. 54'

    Corner, Real Salt Lake. Conceded by Finn Surman.

  68. 55'

    Foul by Sergi Solans (Real Salt Lake).

  69. 55'

    Cole Bassett (Portland Timbers) wins a free kick in the defensive half.

  70. 55'

    Sergi Solans (Real Salt Lake) is shown the yellow card for a bad foul.

  71. 56'

    Corner, Portland Timbers. Conceded by Philip Quinton.

  72. 56'

    Goal! Portland Timbers 1, Real Salt Lake 1. Felipe Mora (Portland Timbers) header from the centre of the box to the top left corner. Assisted by Ariel Lassiter with a cross following a corner.

  73. 57'

    Substitution, Portland Timbers. Antony replaces Ariel Lassiter.

  74. 58'

    Substitution, Real Salt Lake. Samuel Junqua replaces DeAndre Yedlin.

  75. 58'

    Handball by Stijn Spierings (Real Salt Lake).

  76. 58'

    Offside, Portland Timbers. Kristoffer Velde is caught offside.

  77. 62'

    Handball by Diego Luna (Real Salt Lake).

  78. 63'

    Attempt blocked. Cole Bassett (Portland Timbers) right footed shot from outside the box is blocked. Assisted by Diego Chará with a headed pass.

  79. 63'

    Corner, Portland Timbers. Conceded by Lukas Engel.

  80. 63'

    Attempt blocked. Brandon Bye (Portland Timbers) header from the centre of the box is blocked. Assisted by Kristoffer Velde with a cross.

  81. 64'

    Corner, Portland Timbers. Conceded by Zavier Gozo.

  82. 64'

    Corner, Portland Timbers. Conceded by Samuel Junqua.

  83. 66'

    Corner, Portland Timbers. Conceded by Stijn Spierings.

  84. 67'

    Goal! Portland Timbers 2, Real Salt Lake 1. Felipe Mora (Portland Timbers) header from very close range to the bottom right corner. Assisted by Kristoffer Velde with a cross following a corner.

  85. 71'

    Attempt missed. Sergi Solans (Real Salt Lake) header from the centre of the box is high and wide to the left. Assisted by Juan Manuel Sanabria with a cross.

  86. 72'

    Substitution, Portland Timbers. José Caicedo replaces Diego Chará.

  87. 72'

    Substitution, Portland Timbers. Alexander Aravena replaces Felipe Mora.

  88. 74'

    Offside, Portland Timbers. Antony is caught offside.

  89. 74'

    Substitution, Real Salt Lake. Victor Olatunji replaces Sergi Solans.

  90. 74'

    Substitution, Real Salt Lake. Saba Lobjanidze replaces Diego Luna.

  91. 74'

    Substitution, Real Salt Lake. Juan Jose Arias replaces Lukas Engel.

  92. 76'

    Corner, Portland Timbers. Conceded by Samuel Junqua.

  93. 77'

    Stijn Spierings (Real Salt Lake) wins a free kick in the defensive half.

  94. 77'

    Foul by Kristoffer Velde (Portland Timbers).

  95. 79'

    Offside, Portland Timbers. Kristoffer Velde is caught offside.

  96. 80'

    Attempt missed. Stijn Spierings (Real Salt Lake) right footed shot from outside the box is close, but misses to the left.

  97. 81'

    Samuel Junqua (Real Salt Lake) wins a free kick in the defensive half.

  98. 81'

    Foul by Antony (Portland Timbers).

  99. 82'

    Corner, Real Salt Lake. Conceded by José Caicedo.

  100. 84'

    Foul by Juan Jose Arias (Real Salt Lake).

  101. 84'

    Kristoffer Velde (Portland Timbers) wins a free kick on the left wing.

  102. 85'

    Substitution, Real Salt Lake. Alexandros Katranis replaces Juan Manuel Sanabria.

  103. 85'

    Attempt blocked. Brandon Bye (Portland Timbers) right footed shot from outside the box is blocked. Assisted by David da Costa.

  104. 86'

    Foul by Victor Olatunji (Real Salt Lake).

  105. 86'

    Brandon Bye (Portland Timbers) wins a free kick on the right wing.

  106. 86'

    Substitution, Portland Timbers. Joao Ortiz replaces Cole Bassett.

  107. 86'

    Attempt blocked. David da Costa (Portland Timbers) right footed shot from outside the box is blocked. Assisted by Kristoffer Velde.

  108. 88'

    Alexandros Katranis (Real Salt Lake) wins a free kick in the defensive half.

  109. 88'

    Foul by Joao Ortiz (Portland Timbers).

  110. 88'

    Attempt missed. Alexander Aravena (Portland Timbers) right footed shot from the centre of the box is close, but misses to the right. Assisted by Joao Ortiz.

  111. 89'

    Attempt saved. Kristoffer Velde (Portland Timbers) right footed shot from the left side of the box is saved in the top centre of the goal by Rafael Cabral (Real Salt Lake). Assisted by José Caicedo.

  112. 89'

    Corner, Portland Timbers. Conceded by Rafael Cabral.

  113. 90'

    Attempt missed. José Caicedo (Portland Timbers) header from the centre of the box misses to the left. Assisted by David da Costa with a cross following a corner.

  114. 90'

    Attempt missed. Alexander Aravena (Portland Timbers) header from very close range is too high. Assisted by José Caicedo following a corner.

  115. 90'

    Fourth official has announced 5 minutes of added time.

  116. 90'+1'

    Juan Jose Arias (Real Salt Lake) wins a free kick in the defensive half.

  117. 90'+1'

    Foul by Kristoffer Velde (Portland Timbers).

  118. 90'+1'

    Offside, Real Salt Lake. Victor Olatunji is caught offside.

  119. 90'+5'

    Foul by Stijn Spierings (Real Salt Lake).

  120. 90'+5'

    David da Costa (Portland Timbers) wins a free kick on the left wing.

  121. 90'+6'

    Corner, Portland Timbers. Conceded by Samuel Junqua.

  122. 90'+6'

    Alexandros Katranis (Real Salt Lake) wins a free kick in the defensive half.

  123. 90'+6'

    Foul by Antony (Portland Timbers).

  124. 90'+7'

    Second Half ends, Portland Timbers 2, Real Salt Lake 1.

  125. —

    Match ends, Portland Timbers 2, Real Salt Lake 1.

Sources & data scope

Supplied match statistics, events and lineups. Missing components remain unavailable; preview season aggregates are excluded from match statistics.

  • ESPN source ↗ · Checked Nov 4, 2026, 1:38 am ESTSupplied match statistics, events and lineups. Missing components remain unavailable; preview season aggregates are excluded from match statistics.

Times are Eastern Time. A selected match date does not rewind the current table or roster. Missing values are shown as —.