Persepolis will have a second go in three seasons to win their first Asian Champions League trophy after the Iran Pro League champions defeated Saudi Arabia's Al Nassr FC in the West Zone semifinal in October.
Douglas misses prove costly as Junior guides Ulsan to final
Ulsan began the game producing the better of chances with Lee Chung-yong's shot from the edge of the box missing the goal by inches. In the ninth minute, Jeong Dong-ho's teasing cross from the right wing could have crept in at the far post if it was for the slightest of touches from Junior.
But Ulsan's biggest opportunity in the first period came at the half-hour mark when Kim In-sung got in behind the Vissel back line by latching onto a long ball and bearing down on the goal before missing the target with just goalkeeper Daiya Maekawa to beat.
Midfielder Yoon Bit-garam also failed to work the Vissel shot-stopper after making some space for himself inside the box as the two sides finished the first half with no goals between them.
The deadlock was finally broken after the restart, when Vissel launched a goal straight out of the training ground. Takuya Yasui's corner, delivered low into the box, was met by Yamaguchi's drive which sailed into the net through a sea of players.
Ulsan responded by adding Johnsen and Kim Tae-hwan from the bench with the former bringing some life into the attack. But, Vissel seemed to have sealed a place in the final when Yasui robbed the ball from Sin Jin-ho launching a counter in the 75th minute.
Douglas moved forward before picking out Yasui whose shot was blocked by the goalkeeper Jo Su-huk only for Daiju Sasaki to score on the rebound. However, the goal was ruled out by VAR after Yasui was deemed to have fouled Sin in the build up.
VAR was once again called into action, this time at the other end of the field, when Yoon's shot from the edge of the box ended up in goal via a slight deflection off Johnsen. Though, referee Nawaf Shukralla initially ruled out the equaliser for offside, it was overruled by the VAR and the goal stood.
Junior could have won the game for Ulsan in regulation time, but his header rattled the post in the sixth minute of added time. Ulsan were incessant in extra time, but Vissel goalkeeper Maekawa stood in their way.
Maekawa's outstretched hands denied Yoon's shot from range early in the extra period before an even more impressive stop kept out Johnsen's header later. Vissel could have pulled off a win when Douglas was sent through on goal. But with just the keeper to beat, Douglas passed the ball to Furuhashi wide of the goal before failing to connect to the winger's cutback.
The decisive moment came when the game was inching towards a penalty shootout as Maekawa came off his line to foul Junior who had chased down a ball. The Brazilian made no mistake from the spot to score his fifth of the campaign and take Ulsan one step closer to the Asian title.