Leivo played three seasons of major junior hockey in the Ontario Hockey League, scoring 74 goals and 102 assists for 176 points, while earning 150 penalty minutes, in 193 games played. Leivo was selected 86th overall by the Toronto Maple Leafs in the 2011 NHL Entry Draft. Leivo was traded in a multi-player deal to the Kitchener Rangers on January 8, 2013. Leivo finished the 2012–13 season with the Rangers and signed an Amateur Tryout contract with the Toronto Marlies, the Maple Leafs American Hockey League affiliate. He was reassigned to the Marlies on April 16, 2013. After being cut from the Leafstraining camp, Leivo began the 2013–14 in the American Hockey League with the Marlies. However, in the early stages of the 2013–14 season, on October 10, 2013, Leivo made his NHL debut with the Toronto Maple Leafs in a 4–0 win over the Nashville Predators. He later scored his first NHL goal, against Cam Ward of the Carolina Hurricanes on October 17, 2013. Leivo was named to the 2016 AHL All-Star Classic on January 7, 2016, after a stellar first half to the 2015–16 season. Following another stellar season in the AHL, along with decent production in his few NHL appearances, Leivo was rewarded with a two-year contract by the Toronto Maple Leafs on July 21, 2016. The deal came a few hours after the signing of top draft choiceAuston Matthews, and is worth an annual average of $612,500. On February 3, 2018, it was reported by Nick Kypreos that Leivo had requested a trade, citing his lack of use by the team as the primary reason. However, on February 12, 2018, General managerLou Lamoriello denied rumours that Leivo had requested a trade. After appearing in a career-high 27 games for the Leafs during the 2018–19 season, Leivo was traded to the Vancouver Canucks in exchange for Michael Carcone on December 3, 2018. In Vancouver, Leivo changed his number from 32 to 17 in honour of his father, who wore 17 when he played hockey. As a restricted free agent at the conclusion of the season, the Canucks signed Leivo to a one-year, $1.5 million contract on July 5.