Jeremy Ebobisse and Sebastian Blanco both scored off corners following some poor marking by Philadelphia. However, the Union surprisingly clawed back into the game when Andrew Wooten netted in the 85th minute, before they had an equalizer disallowed for a very tight offside on Kacper Przybylko.
The Timbers notched their third goal off a corner in the tournament following some lax defending from Philadelphia. Diego Valeri's delivery sailed over a herd of players toward Kai Wagner, but the German full-back was caught flat-footed. Ebobisse met the ball ahead of Wagner and simply nodded it home with no need to leap or grapple for real estate in the penalty area.
Jim Curtin's youthful Philadelphia squad was struggling to get into the game but should've leveled when Sergio Santos stepped up to take a penalty just before the interval. The referee punished Blanco for impeding Union midfielder Jamiro Monteiro as he rose for a header, but Santos' subsequent spot-kick flew harmlessly over the bar.
The Timbers tightened up defensively after halftime but still posed the biggest threat going forward, especially via exchanges between Valeri and Jaroslaw Niezgoda down Philadelphia's left-hand side.
But it was another corner that effectively ended the affair.
Portland had several opportunities to put the game far out of the Union's reach, but Philadelphia sprung into life in the closing stages after a mostly unimpressive performance.
Steve Clark parried Monteiro's free-kick straight to Wooten, and the substitute guided the ball in. Then, a minute later, it look as if parity was restored when Brenden Aaronson slipped Przybylko through for another goal. But the former Polish youth international was narrowly deemed offside following a video review.
Portland survived the late flurry and will find out their last opponent after Thursday's other semifinal. The Lions and Loons are in unchartered territory, with Orlando never playing in a playoff game and Minnesota falling at the first hurdle in its sole postseason appearance in 2019.