They had a season-low 222 net yards and 18 first downs.
Their quarterback turned the ball over four times and averaged just 4.5 yards per attempt. They went for it on fourth down three times and came up short on all three.
They were in Cowboys territory on five straight possessions in the first half and managed to score just once.
And yet they won. How? Glad you asked. Here are my five top reasons for the Eagles' 23-9 win:
The two takeaways
For the sixth time in eight games, the Eagles lost the turnover battle thanks to Carson Wentz’s two interceptions and two fumbles. That’s the bad news.
The good news is the Cowboys only were able to turn those four giveaways into three points, even though two of the possessions started in Eagles territory.
The Eagles forced two turnovers — fumbles by rookie quarterback Ben DiNucci off of sacks — and both were significant, snuffing out potential Cowboys scoring drives.
Brandon Graham, whose strip sack of the Giants' Daniel Jones a week earlier preserved a 22-21 Eagles win, had another strip sack against the Cowboys in the first quarter that thwarted a potential scoring drive at the Philadelphia 7-yard line.
In the fourth quarter, with the Eagles clinging to a 15-9 lead and the Cowboys at the Eagles' 20, linebacker T.J. Edwards came up the middle untouched on a blitz and decked quarterback Ben DiNucci and separated him from the ball.
Eagles safety Rodney McLeod, who also had been blitzing on the play, picked up the loose ball and returned it 53 yards for a game-clinching touchdown.
Neutralizing Zeke and the run game (sort of)
When you’re down to your third-string quarterback, a rookie third-string quarterback, no less, you need your ground game to be productive and take the pressure off of him.
In six previous games against the Eagles, Ezekiel Elliott had averaged 103.5 rushing yards per game and 4.7 yards per carry. But the Cowboys' offensive line has been ravaged by injuries and the yards have been harder to come by for Elliott this year.
Elliott and the Cowboys finished with 133 yards and 10 rushing first downs on 35 carries. But 19 of those yards came on one of those misdirection plays that the Eagles have been so susceptible to this season – a first-quarter reverse by wide receiver CeeDee Lamb.
The Eagles held Elliott to 3.3 yards per carry – 63 yards on 19 carries. Thirteen of his carries gained 4 yards or less. His longest run was 11 yards.
Three of his 19 carries came on direct snaps that gained a total of 11 yards.
The Cowboys had one possession when they were able to string together several good runs against the Eagles. That was early in the third quarter when they ran seven straight run plays with Elliott and Tony Pollard that picked up 43 yards.
But then they tried to get cute. On a second-and-8 at the Eagles 26, they attempted another reverse, this one with wide receiver Cedrick Wilson. But Eagles defensive tackle Fletcher Cox sniffed it out and was waiting for Wilson, tackling him for a 10-yard loss.
The Cowboys ended up getting no points on the possession after Greg Zuerlein, who earlier had hit a 59-yard field goal, was wide right with a 52-yarder.
The Cowboys converted just four of their 16 third-down opportunities, and two of those were in garbage time after the Eagles already had gone up by 14 points.
Nine of the Cowboys' first 14 third downs were 7 yards or more. Seven of them were 10 yards or more. DiNucci completed just four of his first 10 third-down passes for 35 yards and one first down.
His costly fourth-quarter sack and fumble that McLeod returned for the Eagles' last touchdown came on a third-and-6.
The big reason the Cowboys faced so many third-and-longs was because the Eagles did such a good job at neutralizing them on first down. They held the Cowboys to 3.6 yards per play on first down. That’s the best first-down opponent average by the Eagles this season. DiNucci averaged just 4.2 yards per attempt on first down. Elliott and Co. averaged just 4.1 yards per carry.
Eight of the Cowboys' 24 first-down plays gained 3 yards or less. Just six of them gained 10 yards or more and none gained more than 14.
Blitzing the rookie
Jim Schwartz doesn’t like to blitz much. Prefers to let his four defensive linemen handle the pass rush responsibilities. But he makes occasional exceptions, particularly when his defense is going up against a still-wet-behind-the-ears rookie like DiNucci.
In the Eagles' first seven games, Schwartz sent extra rushers after the quarterback on just 16.8% of opponent pass plays. That was one of the lowest blitz percentages in the league. On Sunday night, he blitzed DiNucci on 12 of his first 31 dropbacks (38.7%) and 13 of 44 (29.5%) overall. He also used several zone blitzes, dropping a lineman into coverage and rushing a linebacker and/or safety.
DiNucci completed just 21 of 40 passes for 180 yards with no touchdowns. He was sacked four times, including once in the fourth quarter on a third-and-6 at the Eagles 21-yard line.
The Eagles blitzed seven defenders on the play. Linebacker T.J. Edwards sacked DiNucci and forced a fumble that safety Rodney McLeod returned for a game-clinching touchdown.
DiNucci completed just 7 of 12 passes for 56 yards when the Eagles sent five or more rushers.
The Fulgham factor
Travis Fulgham’s amazing out-of-nowhere story continued Sunday night. Targeted seven times by Carson Wentz, he had six catches for 78 yards and a touchdown. He beat the Cowboys' rookie second-round cornerback Trevon Diggs for a 32-yard reception in the first quarter that set up Wentz’s short touchdown throw to Jalen Reagor.
He had a 9-yard touchdown catch of his own late in the third quarter, again beating Diggs, to give the Eagles a six-point lead.
In five games since being promoted from the practice squad, Fulgham has 29 catches for 435 yards and four touchdowns. Twenty-one of those 29 catches have been for first downs.
Fulgham’s 435 receiving yards are the most in the league over the last five games. The 49ers' All-Pro tight end, George Kittle, is second with 430.