When Rodney McLeod returned a Ben DiNucci fumble for a touchdown, he thought it was in vain.

The Eagles safety celebrated the defensive score set up by a T.J. Edwards strip sack, but first made sure Duke Riley hadn’t been called offsides to negate the 53-yard return he’d just pulled off. The play stood, and the Eagles went on to beat the Dallas Cowboys, 23-9, at Lincoln Financial Field on Sunday night.

“I really thought we were offsides on that play,” McLeod said. “I’m running, honestly thinking we’ll probably have to come back and defend them in the red zone. But I looked and I see touchdowns."

Facing DiNucci, the Cowboys' third-string quarterback, the Eagles defense was expected to have an opportunity to capitalize on the seventh-round rookie’s first NFL start. They did just that, forcing two turnovers, scoring a touchdown, and carrying water for an Eagles offense that struggled mightily for most of the night.

“The defense bailed us out,” Eagles quarterback Carson Wentz said. “That was a huge play in the game."

Wentz threw two interceptions and lost two fumbles as the Eagles' offense managed just 222 yards. On the four Wentz turnovers, the defense allowed just three points, even though two of Dallas' drives started in Eagles' territory.

Brandon Graham thwarted the Cowboys' first drive off a turnover, which started at the Eagles' 25-yard line. Graham beat Dallas rookie tackle Terence Steele for his seventh sack of the season. Graham’s strip sack set up an Eagles' scoring drive, meaning the play was likely at least a 10-point swing.

“My hat’s off to the defense, they played extremely well,” Pederson said. “They really did an outstanding job. Scored on defense, played tough, got after the quarterback, really a complete game defensively."

The Eagles held DiNucci to 21 completions on 40 attempts for 180 yards and forced two fumbles. They also contained Cowboys running back Ezekiel Elliott, holding him to 63 yards on 19 attempts. Elliott’s rushing total is the second-lowest he’s had against the Eagles in his career. His 3.3 yards per carry on the night was the lowest he’s had in his seven games against the Birds.

“It didn’t look pretty, we knew it was going to be a battle of course, but we held strong when it came down to holding them in the red zone,” Graham said. “I’m happy that we stuck together during those times.”

Edwards led the team with 12 total tackles to go with his strip sack. It was his first game back after missing three games with a hamstring injury. Edwards played almost the entire game because Nate Gerry, typically the team’s No. 1 inside linebacker, was placed on injured reserve with an Achilles injury on Friday.

“It definitely felt pretty good, just being able to be out there and be healthy and running around with those guys and having fun,” Edwards said. “It’s always good to be out there and contribute to a big-time win.”