Portland stormed back from a goal down to beat Real Salt Lake 2-1 at Providence Park, with the hosts completely dominating the second half after a frustrating opening 45 minutes. Real Salt Lake caught them cold before the break, but the Timbers' control of the game was obvious throughout—they had 14 corners to their visitors' five and peppered the opposition goal with 22 shots. Kristoffer Velde was the standout performer, orchestrating the turnaround and justifying his man-of-the-match rating as Portland turned the screw in relentless fashion. It was a classic tale of the better team eventually getting their reward. The Timbers created chance after chance, with Velde at the heart of most of them, and their pressure finally told when they got the goals needed to flip the scoreline. Real Salt Lake offered little going forward and offered almost nothing to suggest they could hold on once Portland found their rhythm. Three points keeps the home side's campaign on track.
The Matchup
Portland Timbers beat Real Salt Lake 2-1 at Providence Park, and the numbers from the match back up how the game played out. Portland Timbers also had the better share of the ball, holding 61% possession, which usually goes hand in hand with the extra control a winning side tends to show. The shot count told a similar story, with 22 attempts from Portland Timbers against 6 from Real Salt Lake over the course of the game. Real Salt Lake had their moments and did not make it easy from start to finish, but ultimately came up short on the day. Small margins like this one tend to add up over a season, and results such as this are often what separates teams in the table further down the line. Here is a closer look at exactly how the two sides compared, statistically.
Man of the Match
Match Statistics
Match Events
| Min | Team | Card | Event | Score |
|---|---|---|---|---|
| 10' | Portland Timbers | Cole Bassett | 0-0 | |
| 18' | Real Salt Lake | Goal — J. Sanabria (assist: M. Guilavogui) | 0-1 | |
| 34' | Real Salt Lake | Morgan Guilavogui | 0-1 | |
| 41' | Portland Timbers | Diego Chará | 0-1 | |
| 55' | Real Salt Lake | Sergi Solans | 0-1 | |
| 56' | Portland Timbers | Goal — F. Mora (assist: A. Lassiter) | 1-1 | |
| 57' | Portland Timbers | Substitution — A. Lassiter on, Antony off | 1-1 | |
| 58' | Real Salt Lake | Substitution — D. Yedlin on, S. Junqua off | 1-1 | |
| 67' | Portland Timbers | Goal — F. Mora (assist: K. Velde) | 2-1 | |
| 72' | Portland Timbers | Substitution — F. Mora on, A. Aravena off | 2-1 | |
| 72' | Portland Timbers | Substitution — D. Chara on, J. Caicedo off | 2-1 | |
| 74' | Real Salt Lake | Substitution — D. Luna on, S. Lobjanidze off | 2-1 | |
| 74' | Real Salt Lake | Substitution — S. Solans on, V. Olatunji off | 2-1 | |
| 74' | Real Salt Lake | Substitution — L. Engel on, J. J. Arias off | 2-1 | |
| 85' | Real Salt Lake | Substitution — J. Sanabria on, A. Katranis off | 2-1 | |
| 86' | Portland Timbers | Substitution — C. Bassett on, J. Ortiz off | 2-1 |
Portland Timbers vs Real Salt Lake Lineups
Looking Ahead
Portland Timbers have a quick chance to build on this result. Their next test comes at home to Austin FC, and how they respond after this result will be worth watching. You can follow the build-up and everything you need to know when Portland Timbers vs Austin FC going to play at 30 August 2026 in Major League Soccer 2026.
Real Salt Lake, meanwhile, does not have long to wait before getting back out onto the pitch. They are next in action away at Colorado Rapids, a game that will give an early sense of how they carry this result forward. Full details are here: Colorado Rapids vs Real Salt Lake going to play at 30 August 2026 in Major League Soccer 2026.