Cincinnati produced 31 points off blunders by the Eagles and thus kept pressure on Pittsburgh in the race for the AFC's second wild card playoff berth.
The Bengals improved to 8-6 and moved a half game in front of the Steelers. Pittsburgh will try to keep pace on Sunday when it takes on the Dallas Cowboys, after which the Steelers will meet Cincinnati on Dec. 23.
Philadelphia lost for the ninth time in 10 games.
The Eagles rallied from a 10-0 deficit in the first half to take a 13-10 lead at the break, but then collapsed under the weight of their mistakes.
Cincinnati began its onslaught when Hall intercepted a pass by rookie quarterback Nick Foles and returned it 44 yards to the Philadelphia 40 with 6 minutes left in the third period.
Andy Dalton then drove the Bengals 40 yards in eight plays and put the Bengals in front to stay with an 11-yard touchdown run.
One play after the ensuing kickoff, a fumble by Foles was returned 25 yards for another score by Wallace Gilberry.
Two more Philadelphia fumbles led to a 32-yard field goal by Josh Brown and a 5-yard touchdown throw from Dalton to A.J. Green.
Cincinnati's first-half touchdown, which came on a 1-yard run by BenJarvus Green-Ellis, was also set up by an Eagles' fumble.
Dalton completed 13-of-27 passes for 127 yards while Green-Ellis ran for 106 yards on 25 carries. Foles was 16-of-33 for 182 yards and a touchdown.