J.J. McCarthy threw two touchdown passes and ran for another as the Minnesota Vikings defeated the Dallas Cowboys 34-26 at AT&T Stadium on Sunday night.

The Vikings were already out of playoff contention entering the game. The Cowboys were not eliminated, but they now are on the thinnest of ice. They will be out if the Eagles beat the Commanders on Saturday to clinch the NFC East.

McCarthy threw for 250 yards, two touchdowns and an interception. He also ran for a 1-yard touchdown, and en route to the end zone gave his rendition of the popular celebration “the Griddy.”

Dallas D looks terrible

There are no excuses for that loss. The Vikings have a quality defense, but their offense is one of the NFL’s worst. And they scored 34 points.

The trade for Quinnen Williams looked to be a game-changer when it happened during the bye week. The defense was much improved the next three weeks as Dallas went on a three-game winning streak. But in the two games since, it looks exactly the way it did before the bye — like it’s one of the league’s worst units.

Personnel upgrades are needed. That’s obvious. Coaching changes are probably needed as well.

The Cowboys are now basically eliminated from playoff contention. Even if they win their final three games, their playoff chances are only 4 percent. There should be plenty of time to evaluate all of the defensive changes needed in the offseason. — Jon Machota, Cowboys writer

Where was Pickens?

It’s stunning that Cowboys wide receiver George Pickens didn’t have a bigger impact. One catch for 10 yards through three quarters? That’s unbelievable. After the game he had in Detroit, a major bounce-back was expected.

Dak Prescott, on the NBC pregame broadcast, talked about CeeDee Lamb and Pickens: “They’re ready to go. Trust me. They’re resilient. CeeDee is coming off the injury. George is coming off a performance he’s not proud of. They’re both gonna give you something special to watch tonight.”

Lamb had his moments, but Pickens was rarely heard from. — Machota

McCarthy’s best game so far

The McCarthy experience played out in full Sunday night. He made some exceptional throws, then missed receivers with some high heaters. Still, it was the best performance of his young career.

Given the Cowboys’ offensive firepower, the Vikings needed to move the ball. Dallas’ defense was going to provide space as long as the Minnesota offensive line could pass protect. Even without starting left tackle Christian Darrisaw, the Vikings limited the Cowboys’ pass rush to a measly five pressures. McCarthy did not take a sack. The time in the pocket allowed him to process the defense, which he was able to do more decisively than in his early-season starts.

McCarthy also made plays out of the pocket and threw the ball with accuracy. In the first half, he was flushed from the pocket out to his left and connected with receiver Jalen Nailor on a 20-yard touchdown. In the second half, McCarthy applied touch to a crossing route to tight end T.J. Hockenson. There were plenty of ups and downs in between. McCarthy sailed multiple passes in the red zone. He also missed Justin Jefferson on an over route in the third quarter.

That McCarthy was able to respond from these misses — and an interception on his first pass attempt of the night, a tipped ball — is part of the reason the optimism has existed even despite his struggles.  — Alec Lewis, Vikings writer

Vikings defense does enough

Brian Flores’ Vikings defense wasn’t perfect, but it did what it’s done for much of the season: keep the Vikings in the fight. The Cowboys reached the red zone five times but scored on only two of those trips. Minnesota made it hard for Cowboys quarterback Dak Prescott all night. The Vikings lined up multiple defenders on the line of scrimmage, forcing Prescott to make checks. The mental strain seemed to take a toll. The Vikings pressured Prescott on 19 snaps, according to Next Gen Stats.

Minnesota’s plan was clear: It was not going to allow Prescott to sit back in the pocket and pick them apart. The Vikings’ ability to keep the score close also allowed the defense to play on the attack. It also made it harder for the Cowboys to stick with their rushing attack. Running back Javonte Williams was successful, tallying 91 yards on 15 carries. The lack of attempts speaks to the Vikings’ ability to dictate the game. The Cowboys averaged 29.3 points per game entering the matchup. The Vikings holding them to 26 should be chalked up as a victory. — Lewis