Morrow played four full seasons of junior hockey in the Western Hockey League with the Portland Winterhawks. After the 2011–12 season, Morrow was named to the WHL's First All-Star Team, and had finished second in league scoring among all defencemen. He was drafted in the first round, 23rd overall, by the Pittsburgh Penguins at the 2011 NHL Entry Draft. He was then subsequently signed to a three-year entry level contract with the Penguins on August 3, 2011. In his first professional season in 2012–13, Morrow was assigned directly to the Penguins American Hockey League affiliate, the Wilkes-Barre/Scranton Penguins, due to the ongoing NHL lock-out. After commencement to the shortened NHL season, Morrow received his first NHL recall to Pittsburgh but did not debut, as a precautionary injury replacement for Kris Letang, on February 10, 2013. On March 24, 2013, Morrow was traded from the Penguins along with a fifth round draft pick in the 2013 NHL Entry Draft to the Dallas Stars in exchange for Brenden Morrow and a third round draft pick in the same draft. On July 4, 2013, Morrow's tenure with Dallas was cut short as he was again involved in a trade between the Stars and the Boston Bruins. Boston traded Tyler Seguin, Rich Peverley, and Ryan Button; in exchange, they acquired Morrow, Loui Eriksson, Reilly Smith, and Matt Fraser. He played 33 games during the 2015–16 season and then re-signed with the Bruins to a one-year, one-way deal for $800,000. On July 1, 2017, Morrow signed as a free agent to a one-year contract with the Montreal Canadiens In the 2017–18 season, Morrow stuck with the Canadiens out of training camp. Despite Montreal dwindling in the standings, Morrow contributed with his best season performance in recording 5 goals and 11 points in 38 games. He was later traded on February 26, 2018, the day of the trade deadline, to the Winnipeg Jets for a fourth-round draft pick in 2018. Morrow scored his first career playoff goal during Game 1 of the 2018 Stanley Cup playoffs in the Jets' first round series against the Minnesota Wild. On June 25, 2019, for a second consecutive season Morrow was not tendered a qualifying offer by the Jets, releasing him as a free agent. In going unsigned over the summer, Morrow was invited to attend the New York Rangers training camp on a professional tryout basis on September 12, 2019. At the conclusion of camp, Morrow was released by the Rangers on September 24, 2019. With the 2019–20 season underway, on October 6, 2019, Morrow signed a one-year, two-way deal with the New Jersey Devils. On December 15, Morrow and the Devils mutually terminated the contract. On December 16, Morrow signed a two-year deal with Dinamo Minsk of the Kontinental Hockey League. In 22 appearances with Minsk, Morrow added just 3 assists, unable to help propel the club into the post-season. On July 15, 2020, Morrow agreed to a mutual termination of the remaining year of his contract with Dinamo Minsk, releasing him as a free agent.