TORONTO -- Maple Leafs captain Dion Phaneuf called it a character win.
After blowing a 2-0 lead and allowing Carolina to score three unanswered goals, Toronto responded with four unanswered goals beat the Hurricanes 6-3 Thursday night.
"We obviously let them back in it a bit," Phaneuf said. "We knew that they weren't going to quit. No team does in this league."
Phaneuf tied the game at 3-3 with 5:25 remaining in the third period, and Joffrey Lupul's unassisted goal put the Maple Leafs in front with 3:10 to go.
Lupul skated the length of the ice, walking around Hurricanes defenseman Joe Corvo before stuffing the puck short side. Corvo, who had two assists in the loss, finished the game minus-3.
"That's going to be on the highlight reel for a long time," said Phaneuf, who finished with a goal and two assists. "He's been great ever since he's been back."
Lupul, who now has seven goals in five games since returning from his broken arm, chose to down play his game-winner.
"I don't know, I'd really have to see the play again," he said. "I think the puck just came around the boards, their guys never really came to me. I gathered some speed and I was fresh. ... I believe it was Corvo, I just got a step on him, pulled it across and beat the goalie."
Jay McClement and Nikolai Kulemin added empty-net goals in the final minute.
James van Riemsdyk, who was reunited on the Leafs' top line with Tyler Bozak and Phil Kessel, helped set up Bozak's 10th of the season four minutes into the opening frame.
Toronto (19-12-4) then made it 2-0 on a second-period power play, as Cody Franson's shot got past Carolina goalie Justin Peters.
However, as Leafs coach Randy Carlyle said postgame, "Everything turned in (Carolina's) favor" following Eric Staal's short-handed goal just past the midway mark of the second. Staal was sprung by Alexander Semin for his team-leading 15th of the season.
Semin then tied it 2-2 on a Hurricanes power play with less than five minutes remaining in the second. Jordan Staal put the visitors ahead for the first time, cutting around Carl Gunnarsson and beating Toronto goalie James Reimer for his eighth of the season seven minutes into the third.
"I thought we deserved the win," Hurricanes captain Eric Staal said. "I thought we played a better brand the full 60 minutes. Right now it's not falling our way, and that's the game of hockey. So we've got to regroup and look forward to a big game in Winnipeg on Saturday."
Lupul, who was returned to his line with Nazem Kadri and Kulemin after briefly playing with Kessel and Bozak on Tuesday night, admitted the team's effort to come from behind and win was a sign of the team's maturity -- something onlookers would not have seen last season.
Lupul set up Phanuef for the game-tying goal just as a penalty on Eric Staal was expiring. The elder Staal wasn't too pleased about getting two minutes in the box for closing his hand on the pick.
"It's a terrible rule. I don't like it," said Staal. "(The referees) were both looking like, 'I don't know if I should call it or not.' It seemed to be guessing, and I fall down off the draw and I've got Lupul spearing me in the face with the puck right by me and the reaction is just to get it away from your face and it gets stuck."
With the win, the Maple Leafs avoided losing to the Hurricanes (15-15-2) for the third straight time this season. Toronto also snapped a four-game losing streak overall to Carolina.
NOTES: Prior to Thursday's game, the Maple Leafs assigned defenseman Jesse Blacker to the AHL's Toronto Marlies. ... Toronto has points in seven straight games. ... Carolina remains in 10th place in the Eastern Conference, three points out of a playoff spot. Toronto is in sixth place. ... The Hurricanes had been held to one goal in five straight games before Thursday. ... Toronto has its first four-game home winning streak since a five-game run from Dec. 22, 2011, through Jan. 10, 2012. ... Leafs defenseman Jake Gardiner was a healthy scratch for the first time since being recalled March 20. ... The Hurricanes are 7-2-1 in their past 10 visits to the Air Canada Centre. Carolina entered Thursday's action six points behind Winnipeg for the Southeast Division lead with three games in hand.