Shawinigan will face host Saint John on Saturday in the round-robin finale, with the winner advancing to the final and the loser to the semifinal.
McTavish, drafted third overall by the Anaheim Ducks last year, gave Ontario Hockey League champion Hamilton a 3-1 lead with 6:34 left.
Avery Hayes and Ryan Winterton had power-play goals for the Bulldogs in the first period. Hayes connected at 9:09 and Winterton with 3:13 left.
Jalen Luypen and Jake Neighbours scored in third for Western Hockey League champion Edmonton. Luypen cut it to 2-1 with a short-handed goal at 2:03 and Neighbours scored with 2:46 left.
Sebastian Cossa stopped 32 shots for the Oil Kings.
Hamilton finished 1-2 in round-robin play, rebounding from a 3-2 loss to Quebec Major Junior Hockey League champion Shawinigan on Thursday night.
READ MORE: Oil Kings defeat host Sea Dogs in overtime
Edmonton beat host Saint John 4-3 in overtime Wednesday night for its lone victory.
Canceled the last two years because of the COVID-19 pandemic, the event features the winners of the three major junior leagues and the host team.
© 2022 The Canadian Press