LANDOVER, Md. — The Eagles survived a hard-fought, divisional-road contest with a 20-16 win over Washington that set the table for their eventual playoff berth on Sunday evening. Win, lose, or draw, here’s what we learned:

Jonathan Gannon’s Jekyll and Hyde defense has shown improvement. Has it shown enough to suggest the Eagles can take down Tom Brady or one of the quarterbacks they may face in the first round of the playoffs? I’m not willing to go that far, especially after another “non-elite” passer completed more than 75% of his passes against Gannon’s unit.

But it’s hard to argue with the defense’s overall numbers (sixth in yards allowed, tied for eighth in points allowed), and more importantly, the effort over the last seven games, particularly when halftime adjustments were made. Now may be a good time to offer the Eagles-haven’t-played-any-good-quarterbacks qualifier. Taylor Heinicke wasn’t in the Garrett Gilbert-Jake Fromm-Trevor Siemian class, though. He may have opened the season as a backup, but Washington has won games when he has been efficient under center.

“I thought Heinicke started hot,” Eagles coach Nick Sirianni said. “Did you see some of the throws Heinicke was making early in that game?”

He did have some fine moments, both with his arm and his legs. But the Eagles had a number of leaky moments in the first half. Cornerback Steven Nelson lost tight end John Bates on an early 24-yard completion. A play later, Genard Avery and Cameron Malveaux were driven off the ball as running back Jaret Patterson scooted through a hole for an 11-yard touchdown.

Gannon can’t play his starting defensive line on every snap, but he got caught with the recently acquired Malveaux at the 4i-technique spot and Washington ran right at him. Washington seemed to be purposely targeting Avery and linebacker Alex Singleton from the jump. It worked. Neither is particularly strong in space. I felt Gannon needed to give them more opportunities to play aggressively.

The Eagles did generate some pressure with their pass rush. An early exotic pre-snap look gave Derek Barnett a free run at Heinicke, which he predictably whiffed on. Josh Sweat split a red-zone sack with Fletcher Cox. But Gannon mostly seemed content with playing soft until the shorter field assisted with stops. The Eagles forced field goals that slowed the hemorrhaging, but they played on their heels and allowed 16 points and 230 yards by the half.

I don’t know if Gannon made any tangible adjustments at the half. Safety Rodney McLeod said the defense just raised its “level of intensity.” That may be the case. The offense scoring to open the second half, and taking nearly eight minutes to do so, also helped shift the pendulum. The defensive success on early downs also allowed for Gannon to dial up various pressures. He didn’t send more than four, but he mixed up his rushers, which helped generate third sacks by Sweat and Avery on back-to-back Washington possessions.

I don’t know how much those pre-snap disguises will fool Brady or Matthew Stafford. But the Eagles defense that the Buccaneers quarterback faced in October looks a touch different both in scheme and personnel with T.J. Edwards’ promotion to top linebacker the most significant change. One thing is certain, Gannon’s unit most likely can’t have the starts it had against the New York Jets and in both games vs. Washington. Top quarterbacks will pounce, and top offenses won’t likely settle for as many field goals.

Jalen Hurts’ even-keeled approach can’t be taken for granted. If you haven’t seen the collapsing FedEx barricade that had Eagles fans crashing to the ground and nearly land on Hurts, it’s quite a thing to behold. Washington released a statement afterward claiming that no one was injured, but the Eagles quarterback came about a foot from having the rail land on him. Hurts didn’t bat an eye, or at least outwardly didn’t appear affected. He helped a few fans up, embraced them and then posed for pictures.

» READ MORE: Eagles quarterback Jalen Hurts avoids injury after a handful of fans fall out of FedEx Field stands near him

That moment was just a cursory example of Hurts’ calmness. Earlier in the game, he said he didn’t hear offensive coordinator Shane Steichen’s call on a key third-and-14 in the third quarter. “I didn’t get the play,” Hurts said. “I thought I heard what he said, but I kind of pulled one out of my hat.” His play didn’t exactly work. But Hurts compensated. He rolled right when he felt pressure, kept his eyes downfield with two hands on the ball — details he’s been inconsistent with — and threw across his body to Greg Ward for a 27-yard completion.

A few plays later, on fourth-and-1 at the goal line, Hurts tripped after the snap. But he somehow flipped the ball to Boston Scott, who finished the outside zone run with a dive into the end zone. It was a reminder of Hurts’ impressive athleticism, as was a first-quarter zone-read run when he broke a defender’s ankles.

Hurts’ left ankle is clearly still not 100% healthy. He scrambled a few times before the half, but Washington seemed to anticipate that the quarterback wouldn’t be as active in the run game.

“We all know he is dealing with an ankle injury and fighting through it,” Sirianni said. “This guys is so tough. … He looked at me at one point in this game and said, ‘Whatever you gotta call, call and I’ll make it work.’ ”

Hurts didn’t run on the Eagles’ first two drives of the second half, but on second-and-6 on the next series, Sirianni dialed up a draw in which the quarterback gained five yards. He kept on a read zone a few plays, although for only two yards, and snuck three yards on fourth-and-1 on the later drive that expanded the Eagles’ lead to four points.

Overall, he rushed seven times for 44 yards. As a passer, Hurts completed 17 of 26 throws for 214 yards. He didn’t have a touchdown, but he had no turnovers and was sacked only once. Did he miss a few throws and open receivers? Sure. I recall a third-down checkdown to Quez Watkins when DeVonta Smith over the top might have been the better read.

But Hurts was composed. He had a number of tight-window tosses and managed a game that could have easily gotten away from the Eagles. Hurts’ performance might have been overlooked compared to other storylines, but that also reflects an expectation that, flaws or not, the position is in capable hands.

The Eagles run game could be hitting a wall. Washington was embarrassed in the first meeting, especially its run defense. The Eagles ran at will and through holes as big as Dan Snyder’s ego. Washington coach Ron Rivera and his formidable front was unlikely to allow that again. The Eagles were also without Miles Sanders (broken hand), and Jordan Howard hadn’t practiced most of last week after suffering a stinger in the Giants game.

Scott was the lead back, but it was tough sledding. Howard didn’t seem to run with as much force. The running backs collectively rushed 26 times for 77 yards (2.96 average), although Scott’s two rushing touchdowns can’t be undervalued. He also caught four passes for 39 yards.

But Sanders’ speed and elusiveness seemed to be an element the running attack missed. I’ll have to watch the film to see if Washington didn’t do anything in particular to counter the Eagles’ weeks-long success on the ground. The Hurts factor, or that he’s not as much one, could partially explain why running has been more difficult the last few weeks.

The Eagles have the opportunity to rest Hurts, Howard, and other starters with the season finale against the Cowboys having little meaning in terms of their playoff spot. Sanders isn’t on injured reserve and could conceivably return in time for the first round. But defenses may have finally caught on, or committed enough, to slow the Eagles’ potent run game.

Sirianni, to his credit, stuck to it in the second half. But he may not have that luxury against a playoff opponent.

Josh Sweat has helped fill the Brandon Graham void. Back in September, after Brandon Graham suffered a season-ending Achilles tendon tear, there was consternation about who could possibly step into the defensive end’s cleats. The leadership void would be difficult to fill, but there wasn’t an obvious candidate who could set the edge or produce stops in big moments. Defensive tackles Javon Hargrave and Cox could assist in the latter category, but it would be upon Sweat and Barnett to provide the former.

Sweat has, for the most part, delivered. He isn’t the run defender Graham was, but he has improved. His pass rush, though, has been consistently solid over the season. The sack numbers might not have been there week-to-week, but in terms of pressures, he’s second to only Hargrave in terms of pass-rush productivity, per Pro Football Focus. But the sacks have started to come. Sweat has 2 ½ in the last two games, along with three batted passes.

His effort hasn’t fallen off since he signed a three-year, $40 million contract extension in September. Barnett plays with great energy, as well, but his play hasn’t warranted the $10 million, fifth-year option the Eagles picked up in the offseason. He has the fewest sacks (two) and quarterback hits (11) among the starting D-linemen.

Sweat’s contract guarantees his return in 2022. That same can’t be said for Barnett.

Extra points. The Eagles committed six penalties to Washington’s one. A few, such as Avery’s illegal contact that negated his interception, seemed obvious. But the pass interference on Avonte Maddox was an egregious call. Rivera felt that Eagles safety Anthony Harris should have been flagged when he undercut Bates and the tight end tripped on McLeod’s game-sealing interception. It looked incidental, and I’m not sure Bates could have gotten a hand on the ball had he stayed upright. … The Jalen Reagor run plays have been drive-killers. It’s also time to play more of Watkins outside and Ward in the slot in place of Reagor. … Speaking of playing time, Tarron Jackson should be on the field more than Ryan Kerrigan. The veteran end has only three total tackles, just one more than Malveaux, who has played 250 fewer snaps.