The two teams vying for the 2019 Overwatch League championship next weekend in Philadelphia have the following players on their rosters: the season’s Most Valuable Player, three other MVP candidates, Rookie of the Year, six Role Stars, five Role Stars honorable mentions, and seven Pacific Division All-Stars. Together, they’ve combined for four 7-0 stages, two stage titles, three stage runner-up finishes, the only golden stage in league history, and the longest winning streak in league history.

Vancouver Titans. San Francisco Shock. This is the juggernaut matchup Overwatch League fans deserve as a season finale. Not only did they accumulate the two best records and map-score differentials during the season and make it out of a grueling double-elimination playoff bracket, they’ve also forged one of the fiercest rivalries in professional Overwatch. After facing each other twice in the regular season and twice in stage finals, the head-to-head series is tied 2-2, with a dead-even 11-11 map score.

Every moment of the season for these two teams has been building up to this showdown in the 2019 Grand Finals. Yet, despite their converging paths at season’s end, the Shock and Titans started out as entirely different teams.

Eight of Vancouver’s nine original players came from Korean Contenders team RunAway, signing as a unit with the expansion organization. The ninth was Jun-Keun “Rapel” Kim, a support player who had played for a rival Korean Contenders team, Element Mystic. Only one member of the roster had ever been on an Overwatch League team before.

The Shock, on the other hand, were one of the Overwatch League’s original franchises. They went 17-23 in the 2018 season, finishing the second half of the season 11-9 after young phenoms Matthew “Super” DeLisi and Jay “Sinatraa” Won became eligible to play and midseason additions Min-Ho “Architect” Park, Hyo-Bin “Choihyobin” Choi, and Grant “Moth” Espe arrived to bolster their lineup. The Shock kept all five players, plus Andreas “Nevix” Karlsson, when they retooled their roster for 2019.

Joining the Shock’s 2018 lineup were damage players Dong-Jun “Rascal” Kim and Nam-Ju “Striker” Gwon, both of who had previous experience in the Overwatch League, as well as main tank Myeong-Hwan “Smurf” Yoo and support Min-Ki “Viol2t” Park, both of whom were joining the Overwatch League for the first time.

The two teams entered the 2019 season with high expectations, yet it quickly became clear that both were going to surpass them.

The Titans quickly found their comfort zone, as the Stage 1 meta revolved around the triple-tank, triple-support composition that was already in favor when they won 2018 Contenders Season 2 as RunAway. Every player on the team worked together to enable Sang-Beom “Bumper” Park’s aggression, making him seem immortal at times. It wasn’t just Bumper who seemed immortal, however—the entire team looked unbeatable en route to a breezy 7-0 record.

Meanwhile, the Shock withstood a tough Stage 1 schedule that saw them lose three matches—including once to the Titans. However, they became a force of their own in the 3-3 meta and wound up in the Stage 1 Finals against Vancouver.

Full Match | San Francisco Shock vs. Vancouver Titans | Stage 1 Finals | Day 4

That match became an instant classic. The Titans were able to win the Stage 1 title, but only after coming from behind to turn a 3-2 deficit into a 4-3 victory. Over the seven maps, it became apparent that every player in that match was among the best in their roles.

Hyo-Jong “Haksal” Kim from the Titans and Rascal from the Shock were better than every other Brigitte player in the league. Min-Soo “Seominsoo” Seo and Sinatraa used their prior experience on Zarya to surge ahead of other damage players. Hyun-Woo “Jjanu” Choi and Choihyobin were statistically two of the best D.Va players in the league, while the Titans’ Ju-Seok “Twilight” Lee and the Shock’s Viol2t could say the same about Zenyatta. Lúcio players Seong-Jun “Slime” Kim of the Titans and Moth of the Shock did everything needed to help their teams run like clockwork.

If there was any doubt about the dominance of these two teams, they both kept proving in Stage 2.

The Shock came surging out the gates by sweeping the Los Angeles Valiant in their first match, and then the Guangzhou Charge in their second match. In fact, they continued to do so in every match of Stage 2, becoming the first team in Overwatch League history to have a golden stage after going 28-0 in maps.

Meanwhile, the Titans continued making history of their own, extending their win streak from Stage 1 to go 7-0 in Stage 2 as well. Between stage playoffs and regular-season matches, they won 19 consecutive matches before ending up in the stage finals against the Shock once again.

Full Match | Vancouver Titans vs. San Francisco Shock | Stage 2 Finals | Day 4

The Stage 2 Finals featured the same 12 players in essentially the same meta, but this time the Shock were victorious, winning 4-2 to finish Stage 2 with a 39-3 map record. Simply put, they were untouchable.

Stage 3 brought the season’s first significant change in the meta, as teams began to use Sombra, triple-damage compositions, and compositions that included Roadhog. At first, both the Titans and the Shock appeared to be shaken by the changes. The Titans lost their first-ever regular season match (that streak also ended at 19 matches), and the Shock were upset by the Houston Outlaws before losing again to the Chengdu Hunters. Yet the Titans still finished the stage 6-1, while the Shock went 5-2—with Rascal’s Baptiste play standing out as a unique adaptation to the meta.

There would be no Stage 3 Finals rematch, but the Shanghai Dragons needed to beat both teams in order to claim their title, overwhelming the Titans 4-1 in the semifinals and staving off a Shock comeback in the finals to win 4-3.

In between Stages 3 and 4, the five finalists for league MVP were announced. Unsurprisingly, four of the five represented Vancouver and San Francisco: Twilight and Jjanu from the Titans, and Sinatraa and Super from the Shock.

Stage 4 heralded the most radical meta change in league history, as 2-2-2 role lock was enforced. Despite being unable to continue running 3-3 compositions, both Vancouver and San Francisco seized the opportunity to show off their lineup depth. Smurf began to see playtime for the Shock as the new meta called for steady Orisa play, and Architect wound up in the starting lineup over Sinatraa. Meanwhile, the Titans rotated Rapel, Chung-Hee “Stitch” Lee, and Dong-Eun “Hooreg” Lee in and out of their lineup.

The Shock earned their second undefeated stage of the season, and one of those wins was over the Titans, evening the season series at 2-2. The Titans finished 5-2 in Stage 4, clinching the Pacific Division with a 25-3 record and securing the top seed for the playoffs; the Shock earned the third seed and finished with the second-best record at 23-5.

In between Stage 4 and the playoffs, the Titans reunited with a former RunAway teammate in main tank Jang-Hyun “Tizi” Hwang, who quickly proved to be a useful addition by immediately slotting into their starting lineup in the Orisa role. He and his teammates did exactly what they needed to do to win each match, beating the Seoul Dynasty 4-2, the Los Angeles Gladiators 4-2, and the New York Excelsior 4-3 to make it to the Grand Finals through the winner’s bracket.

The Shock, meanwhile, got off to a rocky start in the playoffs. Their opening match was an epic showdown with the Atlanta Reign that went to a seventh map. The Shock were in good shape to win the match’s final teamfight, but lost the map—and the match—by stepping off of the payload in overtime.

Instead of getting disheartened, the Shock took their relegation to the loser’s bracket as an opportunity to flex their muscles. In their 4-0 win over the London Spitfire, the Shock became the first team in 2019 to play every single member of their roster. After dispatching the defending champions, the Shock then swept every remaining opponent they played to book their trip to the Grand Finals.

To say these two teams have earned their place in the Grand Finals would be an understatement. They’ve been dominant in multiple metas with different sets of heroes. Their players racked up a vast collection of awards, and even those who didn’t have proven their worth with their performances onstage.

And on Sept. 29, the Vancouver Titans and San Francisco Shock will battle each other one last time—and the winner will walk away as champions.

The 2019 Overwatch League Grand Finals will air live on ABC and be livestreamed on Twitch, overwatchleague.com, and the Overwatch League app. Get the latest Grand Finals news and information here, and sign up for league newsletter updates here.