Hall drove to the net and had his initial shot stopped by Dan Vladar. The rebound popped out to Hall during a goal-mouth scramble, and he swiped it past Vladar's left pad and through the legs of Travis Sanheim.
Nikolaj Ehlers had a goal and an assist, and Seth Jarvis scored for the Hurricanes, the No. 1 seed in the Eastern Conference and Metropolitan Division. Jackson Blake had two assists, and Frederik Andersen made 34 saves.
Jamie Drysdale and Sean Couturier scored for the Flyers, the No. 3 seed in the Metropolitan. Vladar made 39 saves.
Carolina leads the best-of-7 series 2-0. Game 3 will be at Xfinity Mobile Arena on Thursday (8 p.m. ET; TNT, truTV, HBO MAX, SN, CBC, TVAS).
Drysdale put the Flyers up 1-0 with a power-play goal at 4:02 of the first period. He collected a loose puck in the high slot and put a wrist shot past Andersen's blocker.
It was the first time Carolina trailed this postseason and ended a streak of not trailing in a game at 618:51 dating back to April 7.
Couturier made it 2-0 just 39 seconds later at 4:41. Carl Grundstrom backhanded the puck in front from behind the net and Couturier slipped the puck through the five-hole for his first goal of the playoffs.
Ehlers cut the deficit to 2-1 while on the power play at 10:21. Jackson Blake fed a cross-ice pass to Ehlers in the right face-off circle, where his one-timer went in off Vladar's left shoulder for his first playoff goal with Carolina.
Jarvis tied it 2-2 with his first goal of the playoffs at 11:21, taking a pass from Ehlers and burying a snap shot past Vladar's glove from the right circle.