Steven Lorentz and Sebastian Aho scored, and Derek Stepan scored his 500th NHL point in his 800th NHL game for the Hurricanes (41-12-5), who have not lost at home in regulation since Jan. 13, when the Columbus Blue Jackets defeated them 6-0 (12-0-1).
Frederik Andersen made 28 saves in his first start after missing three games with an upper-body injury.
Derick Brassard scored his 200th NHL goal, and Martin Jones made 33 saves for the Flyers (18-30-10), who have lost 10 of their past 13 games.
"I'm pretty angry, to be honest with you right now, to put in an effort like that," Philadelphia coach Mike Yeo said. "Unfortunately, we just didn't finish it off. I liked the effort. I liked a lot of the details in our game. I thought we gave ourselves a chance to win."
Carolina took a 1-0 lead at 8:34 of the second period when Lorentz scored on a tap-in at the left post off a pass from Stepan.
"It's funny how the game works," Stepan said. "The stars aligned. It's a special night. [Playing 800 NHL games is] something not many people get the opportunity to [do]. I've been fortunate enough to have that. It keeps adding onto the things I've been lucky enough to come across."
The 31-year-old forward was a healthy scratch in nine of the past 12 games. He has scored 15 points (seven goals, eight assists) in 41 games this season, his first with the Hurricanes.
"In my 30-whatever years in this league, he's probably the best I've ever seen in handling [being scratched]," Carolina coach Rod Brind'Amour said. "He's been a pro every step of the way. It's not easy."