Coyle was drafted by the San Jose Sharks in the first round of the 2010 NHL Entry Draft. On June 25, 2011, he was traded to the Minnesota Wild in exchange for Brent Burns and second-round pick in the 2012 NHL Entry Draft and a first-round pick in the 2011 Draft. On March 1, 2012, Coyle signed a three-year, entry-level contract with the Wild, with the team keeping him in the QMJHL with the Saint John Sea Dogs until the end of the 2011–12 season. Coyle made his NHL debut on February 4, 2013. Wearing number 63, Charlie skated 12:44, with two shots and a hit. Coyle scored his first NHL goal against Joey MacDonald of the Calgary Flames on February 23, 2013. Coyle scored a memorable goal against the Los Angeles Kings on March 30, 2013—while shooting a one-timer, Coyle got taken down to his knees, received his own rebound, then buried a backhand shot for his eighth goal of the season. Coyle also got into his first NHL fight against the Columbus Blue Jackets, taking on Brandon Dubinsky. He was given a match penalty for a hit on Artem Anisimov, which sparked the fight. After further review from the NHL, he was not given any additional discipline. Coyle switched his jersey number from 63 to 3, the same number he wore in college and in the QMJHL. Charlie made headlines after making a fan named Henry's dreams come true after waving to the boy during warm-ups. The gesture and Henry's reaction to the gesture were put on YouTube and it went viral. Charlie met Henry and his family a few weeks later, a day before a game between the Wild and the St. Louis Blues. In the 2015–16 season, Coyle was second on the team in goals scored, behind veteran Zach Parise. He set personal bests in goals, assists and points, breaking the 20-goal plateau for the first time in his career. Early in the 2017–18 season, Coyle was placed on long term injury reserve after breaking his leg in a game against the Chicago Blackhawks. This ended his franchise-record game streak of 316 consecutive games. He returned to the Wild's lineup on November 20, 2017, after missing 16 games. In a game against the New York Rangers on February 13, 2018, a puck caught him high on the mouth, requiring stitches to close it. He required more stitches later on in the season against the Arizona Coyotes when a stick caught him in the mouth.
Boston Bruins
On February 20, 2019, Coyle was traded to the Boston Bruins in exchange for Ryan Donato and a fifth-round pick in the 2019 NHL Entry Draft. Although Coyle initially struggled with the Bruins, he was able to find consistency in time for the 2019 playoffs, centering the Bruins' third line along with Marcus Johansson and Danton Heinen, scoring 9 goals and 16 points in 24 games. The Bruins would advance to the 2019 Stanley Cup Finals, ultimately losing to the St. Louis Blues in seven games. He finished the playoffs with nine goals and seven assists. On November 27, 2019, Coyle signed a six-year, $31.5 million contract extension with the Bruins.