The Portland Timbers booked their place at MLS Cup with a dominant 2-0 win over Real Salt Lake in Saturday's Western Conference semi-final.
Giovanni Savarese's side opened the scoring within five minutes as Felipe Mora profited from some shoddy defending by Aaron Herrera to find the bottom corner.
Both sides traded periods of pressure after that, but it always felt like the Timbers had RSL at arm's length. And Portland got the job done after the break with Santiago Moreno driving forward through the middle and rattling the post, only for the ball to hit the back of David Ochoa and end up in the net.
RSL tried to apply some more pressure as the game went on but, as he had been all night, Steve Clark was equal to everything thrown at him between the sticks. Salt Lake's night was truly ended when Herrera was sent off for a second yellow card offense in the 79th minute.
The Timbers now await the winner of Sunday's match between the Philadelphia Union and NYCFC as they look to win MLS Cup for the first time since 2015 - they lost in the final against Atlanta United in 2018.
Here is how every player rated on Saturday:
Portland Timbers player ratings
Goalkeeper & defenders
Steve Clark (GK) - 8 - Made a wonderful close-range save to deny Kreilach and dealt with everything thrown at him.
Josecarlos Van Rankin (RB) - 7 - Had a pretty quiet night with RSL attacking much more down their right flank. Coped well enough when tested.
Larrys Mabiala (CB) - 7 - Solid defensively and tidy with the ball.
Dario Zuparic (CB) - 8 - Totally dominant and set Moreno away for the second goal with a nice scooped pass over the RSL midfield.
Claudio Bravo (LB) - 8 - Had a lot of work to do with Herrera driving down the RSL right but coped brilliantly. Made a match-high six tackles, as well as three clearances and nine recoveries.
Diego Chara (CM) - 7 - His usual rock-solid self defensively, and always quick to drive the Timbers forward once he'd turned the ball over.
Cristhian Paredes (CM) - 8 - Played out of the RSL press brilliantly and was the perfect link between defense and attack for Portland.
Marvin Loria (RW) - 7 - Faded in the second half, but was a real menace for the RSL backline in the opening 30 minutes.
Yimmi Chara (CAM) - 8 - Took up all sorts of dangerous positions playing just underneath Mora and seemed to have limitless energy reserves.
Santiago Moreno (LW) - 9 - Direct, creative, and ruthlessly effective. Won't be credited with the second goal but deserves massive acclaim for driving at the RSL backline and dispatching a powerful shot onto the post.
Felipe Mora - 7 - Opened the scoring within five minutes to set Portland on their way, and end his goal drought. Had an otherwise quiet night, but he'd already done the damage.
Jaroslaw Niezgoda (for Mora, 60 mins) - 5 - Fluffed his one clear chance and didn't see much of the ball with RSL pushing forward.
Diego Valeri (for Marvin Loria, 80 mins) - 6 - His cameo was basically a victory cigar for Savarese, but he was tidy as always.
Blake Bodily (for Moreno, 90 mins) - N/A - No time to do anything of note.
George Fochive (for Paredes, 90 mins) - N/A - As above.
Real Salt Lake player ratings
Goalkeeper & defenders
David Ochoa (GK) - 5 - Can't be blamed too much for the own goal and made a couple of good saves, but certainly wasn't the reliable presence he usually is.
Aaron Herrera (RB) - 2 - Dreadful clearance for the first goal and got himself sent off in the second half, effectively killing the game. Only had one really promising attacking moment, which is not ideal when you're one of your team's main outlets.
Justen Glad (CB) - 5 - Booked early for a foul on Mora, which limited his ability to truly commit. Still managed to get through a fair bit of defensive work.
Marcelo Silva (CB) - 6 - Made a big goalline clearance in the second half but had a tough time against wave after wave of Portland pressure.
Andrew Brody (LB) - 5 - Came out of his shell slightly in the second half, but it was too late by then.
Nick Besler (CM) - 5 - A little sloppy on the ball, perhaps because he was asked to get through so much defensive work.
Pablo Ruiz (CM) - 4 - Overrun in midfield and wasted a few good positions with wild shots off target.
Anderson Julio (RW) - 5 - A couple of dangerous individual runs but didn't offer Herrera enough support down the right.
Damir Kreilach (CAM) - 6 - Probably RSL's most dangerous player on the night and could have scored with a couple of headers. Not given enough service.
Albert Rusnak (LW) - 4 - Didn't look sharp on his return to action.
Rubio Rubin (ST) - 3 - Hardly involved, didn't even attempt a shot. Lack of service didn't help, of course.
Justin Meram (for Julio, 58 mins) - 5 - At least tried to offer RSL a more direct option on the left.
Bobby Wood (for Rubin, 58 mins) - 3 - A pretty awful outing from the bench, never got going.
Jonathan Menendez (for Besler, 71 mins) - 4 - Didn't get into the game.