Dougie Hamilton scored twice for the Hurricanes (44-29-7), who lead the Columbus Blue Jackets and Montreal Canadiens by one point for the first wild card and are two points behind the Pittsburgh Penguins for third place in the Metropolitan Division.
"These guys, they play hard, and we don't always get the wins and things don't always go our way but we know what kind of effort we're going to get and I thought it was pretty solid," Hurricanes coach Rod Brind'Amour said. "We had a couple of little lapses there but our goaltender (Petr Mrazek) came up huge when he needed to, and I thought we were the better team overall."
WATCH: [All Hurricanes vs. Maple Leafs highlights]
John Tavares scored for the Maple Leafs (46-27-7), who will finish third in the Atlantic Division. Garret Sparks made 33 saves.
"We were just a little sluggish to start coming off yesterday's game and obviously we had a team that was extremely desperate coming in here," Tavares said. "We have to be at a better level than we were to start the game in the first half. Then we started to do some good things but giving up the third goal obviously made it difficult."
Jordan Staal had a goal and an assist for Carolina, and Mrazek made 23 saves for his 100th NHL win.
"Can't say enough about Petr," Brind'Amour said. "We had some major breakdowns and he came up with four or five in the third period alone that would definitely have changed the momentum or who knows what would have happened. He was the difference in the game in my opinion."
The Hurricanes went up 1-0 at 18:03 of the first period when Justin Williams' shot from behind the net banked off Sparks' skate.