The Minnesota Vikings found a way to turn a halftime deficit into a fulltime win for second time in three games on the backs of an elite defense despite playing with what looked to be a rusty Xavier Rhodes and an injured Sharrif Floyd.

A Panthers offense that led the league in scoring in 2015 was held to 10 points at home, though they averaged 33 points at home last year and scored 40.4 points per game at home in their last seven home games, including the playoffs.

In the first half, the Vikings offense continuously stalled while the defense looked liable to be run over, saved from allowing 17 through a Kelvin Benjamin penalty on an otherwise stellar catch-and-run from Fozzy Whittaker.

In the first half the Panthers were 14 of 19 for 170 yards (8.9 yards per attempt) through the air, with a touchdown on the ground and a late interception to end the half—a free-shot play on third-and-long with seven seconds left.

On the other side of the ball, Sam Bradford was 4 for 11, for 26 yards and averaged 2.4 yards an attempt with no touchdowns or interceptions. The Vikings fared better on the ground in the first half than the Panthers (3.9 yards per carry excluding kneeldowns, compared to 3.3) but it was overall a poor effort. Jerick McKinnon averaged 6.0 yards a carry, but Matt Asiata only averaged 1.0 on his three tries.

The stat-line could have looked much worse, as Bradford had two dropped interceptions in the first quarter that the Vikings were lucky not to see those turn into turnovers.

After that, the script flipped. The Panthers were 8 of 17 for (5.4 YPA) in the air and Newton through two more interceptions, both significantly more meaningful. Three sacks in the first half added to the five sacks in the second half, and the Vikings generated three more quarterback hits in the final two quarters (with only one in the first half).

Outside of the first quarter, Carolina didn’t put a point on the board.

That continues a Vikings point differential of 46-13 in the second half of games despite falling behind with a nine point deficit over the course of those three games.

Quarterback performance in this game is difficult to gauge. It’s easy to argue that Bradford’s night was good after seeing a 93.0 passer rating with a touchdown to add to his total, but the whole of the night was extremely mixed.

His 39.0 ESPN QBR might be a more accurate representation of what happened, with an inaccurate touchdown throw reeled in impressively by Kyle Rudolph but excellent play in the second half papering over some very worrying first-half play.

While he ended up with no interceptions on the stat sheet, two early passes were nearly picked off and a second attempt to Kyle Rudolph in the end zone was quite inaccurate, though that would have been called back anyway because of Stephon Diggs’ offensive pass interference penalty.

Pro Football Focus gave him a 74.4 on the night, which is just a little bit above average and splits the difference between the QBR and passer rating scores. Between the three ratings, it probably makes sense to go with this final one in the middle, while acknowledging that Bradford played at extremes.

Diggs had a pretty quiet night statistically (four receptions for 40 on seven targets) and the next-most productive receiver, Adam Thielen, pulled in a fairly typical effort with three receptions and 29 yards.

Upon initial review, Diggs looked much better than his 4/40/0 night suggests, with some excellent route-running and the capability to generate space for the ball. That it never arrived isn’t necessarily his fault, and the offensive line—particularly in the first half—played a big role in that. This is the second game, however, that Diggs had a boneheaded penalty, and it nearly cost the Vikings a touchdown.

In the first half, Bradford was constantly under pressure, and that discomfort certainly contributed to his early struggles—though not all of it, as his second dropped pick was under no duress at all. Only seven of his passes throughout the game traveled over ten yards in the air, though he was 5-for-7 on them, according to Pro Football Focus.

The rest of the game saw significantly less pressure. Some of this had to do with Bradford getting rid of the ball quicker, and some of it had to do with improved play from the offensive line. With 83.3 percent of dropbacks coming through shotgun, the Vikings clearly made sure to protect their passer in multiple ways.

On the whole, PFF logged a pressure rate of 40 percent, which is lower than it was against Green Bay, but still significantly higher than average in the NFL—a rate that, last year, would have ranked as one of the worst five offensive line units in pass protection. But in the second half, Bradford wasn’t sacked and even avoided hits.

Jerick McKinnon was impressive in his first run at the starting job with Adrian Peterson made absent through injury. Though he didn’t earn the official start, he earned 16 carries—ten more than Matt Asiata, the nominal starter.

While he ended up with 2.8 yards a carry, the majority of his yardage came after contact (2.2 yards a carry, per PFF) and his success rate of 41 percent is relatively high compared to the rest of the league. There was an occasional carry that he looked out of sorts—a six-play stretch of runs without a successful carry held a few of them—but he for the most part looked dynamic and explosive in ways that Peterson hadn’t so far this year. Even some of his losses were runs that overcame obstacles the offensive line gave him.

Matt Asiata looked functional, but not impressive. That’s generally his role and he generally finds a way to avoid contact until the end—at which point he drives through for an extra yard or so—but during this game wasn’t as successful. He generated successful runs at a 16.7 percent rate, which is very disappointing. He didn’t have stellar blocking in front of him, but the line seemed to fail him as often as it did McKinnon.

With seven targets and 70 yards, Kyle Rudolph certainly had a more productive game than fans may be used to seeing from him last year, especially with a touchdown to his name. Not only that, he acquitted himself well as a blocker, remaining in pass protection more than once and keeping his assignment clear of the pocket while also generating some push in the run game.

Offensive Line

T.J. Clemmings was praised for not playing as poorly as Matt Kalil, which is true, but he didn’t do well. In the first half, before the adjustments, he was left with an assignment on the edge rusher only nine times despite the Vikings dropping back to pass 13 times. On two occasions, Kyle Rudolph and Jerick McKinnon were given the explicit assignment to block the edge defender one-on-one.

On screen passes, the Vikings avoided having Clemmings engage in backside protection, instead flaring him back to trap (unsuccessfuly) or to block ahead of the screen (unsuccessfully). He lost his battle with the edge rusher on those nine snaps four times, but two of them occurred at the same time as the sacks given up by Andre Smith and Jerick McKinnon/Alex Boone (depending on who you assign blame for the Thomas Davis sack). One occurred on a play Bradford got rid of the ball quickly enough to avoid any issue and another time, Boone wrestled Clemmings’ lost assignment to the ground.

Clemmings’ second half was certainly an improvement and his failure rate wasn’t nearly as high, but it would be incorrect to say he played well. That extends to the run game as well, where he gave up several blocks to eventual tacklers of Jerick McKinnon and Matt Asiata.

Before he was injured, Alex Boone wasn’t having a marquee game, but he certainly was playing better than he had in the previous two games—not that that is a particularly high bar to clear. It was probably replacement-level guard play, which is why it is surprising that when a guard actually replaced him (Jeremiah Sirles, who played almost exclusively at tackle in camp and the preseason), that guard played better.

Sirles had a consistent game, and didn’t seem to be egregious in giving up pressure nor a liability in the run game. It’s encouraging to see evidence that there is at least one element of offensive line depth that has actually materialized, instead of preseason depth lost due to retirement, cuts or “illness.” He did get away with a little bit as he seemed to be the benefactor of free help from Berger, but for the most part was better than Boone.

There’s not much to be said about Joe Berger’s game, which is a good thing. He remained consistent in both the passing and running game, and continues to showcase the ability to block a nose tackle without help, which free Sirles and Boone up on the left side to assist Clemmings.

Brandon Fusco earned a lot of ire over the past several games for his shoddy protection, but in this game wasn’t too bad, surrendering pressure two or three times and giving up a play in the run game about as often. It wasn’t a perfect game by any means, but it wasn’t bad and he deserves credit as one of the better offensive linemen on Sunday.

Constantly under scrutiny for his play from Vikings fans, it seems as if Andre Smith put forth another poor effort. His play in both the running game and in pass protection was lacking, and there’s no particular stretch of play he can hang his hat on, having been consistently beat by opposing defensive linemen.

The Vikings rolled help over to Clemmings’ side, so he may be the “true” weakest link, but it remains fact that more pressure is coming from Smith’s side than anywhere else and it’s likely the reason Vikings offenses are sputtering so often.

Defense

There’s not much that can be said about the defense that isn’t immediately obvious. They sacked Cam Newton eight times, intercepted the ball three times and held the run game to 3.8 yards a carry. Kelvin Benjamin didn’t see any targets at all until late in the fourth quarter when Marcus Sherels found himself matched up against him, and that led to a pass deflection.

The most impressive defensive player was probably Everson Griffen, who didn’t just notch three sacks but four additional pressures besides. With a pressure rate of 18 percent, he not only harassed Newton the most efficiently, but the most often—missing only five passing downs because he threw up on the sideline.

The young phenom, Danielle Hunter, grabbed a sack and was arguably more stout in the run game than Griffen, who was merely adequate there. Overall, Hunter generated six total pressures on 37 passing downs, which is nearly commensurate with Griffen’s very impressive rate.

It was a good game for Tom Johnson, but one of the worse ones for him as a pass rusher, as he “only” logged a pressure on three of his 33 pass-rushing snaps. That rate of nine percent is well above the average for defensive tackles, but below his rate over the past two games. The interception wasn’t too bad, either, even if it was paired with a fumble.

Linval Joseph produced another sack as well as an additional pressure all while remaining disciplined and critical to the Vikings’ run defense. He only had two tackles specifically in the run game, but he did an excellent job forcing runs out of the A gap all while closing down on edge runs against zone play.

Shamar Stephen didn’t stuff the stat-box but seemed to hold up front well enough with only one major mistake when playing in rotational duty for the Vikings. He didn’t generate any pressure in the passing game, but it didn’t seem like that was a job he was tasked with much.

At the second level were the only players that seemed to do poorly, and it was the oldest of them that seemed to do the best. Chad Greenway didn’t get a lot of snaps (27, or 35 percent of all defensive snaps) but did a good job beelining to runners and generating losses for the opposing offense. He was never targeted, but he also didn’t take too many snaps in coverage. Still, it was a good day for the veteran.

Both Eric Kendricks and Anthony Barr struggled. While Barr can point to his impactful sack (and an additional pressure on 13 pass rushing snaps), he still was exploited in the running game and wasn’t exactly a beacon of coverage when dropping into zones against the pass.

Kendricks racked up a high tackle total, but on many of those tackles wasn’t too relevant to the play. On other plays, he found himself pushed back away from the play. In the passing game, he had issues keeping in coverage with players like Greg Olsen. Four of his tackles occurred in coverage and a few more were cleanup in the run game after he was forced back and the offense had accomplished its goal.

It was by no means abysmal play and it isn’t any cause for alarm, but the level of play from the linebackers is worth noting.

The secondary was stellar.

Many of the sacks came as a result of coverage, where some combination of Xavier Rhodes, Terence Newman, Trae Waynes, Harrison Smith, Andrew Sendejo and even Marcus Sherels blanketed the receivers. Rhodes and Waynes both held up very well against Kelvin Benjamin and Terence Newman did well, too. Rhodes gave up an early reception and Newman made a few more mistakes while Waynes gave up a bad reception to Ted Ginn early… but when the second half rolled around, none of that mattered.

One could look at Munnerlyn’s tackle total (nine) and be rightly concerned, but only two of them came after getting beat in coverage, while another few were cleaning up the coverage mistakes of another player or an underneath reception allowed by the scheme. Beyond that, four of them were in the run game, and generally good plays.

For as much as Munnerlyn was targeted (seven targets in 29 coverage snaps), he didn’t allow much yardage to get by him.

Not only that, Harrison Smith was a godsend in the run game, and cleaned up mistakes from the linebackers and the defensive line to prevent small gains from becoming big and preventing big gains from becoming catastrophic. As good as Smith has been in coverage (only targeted twice in 43 snaps in coverage), he was dominant in the run game and even saved a fumble from Tom Johnson.

Overall, a better game than one could reasonably expect from a secondary that already had high expectations going in. While that first half was concerning, the Vikings turned things around in the second half to make sure that Newton and his receivers would be blanked out for the rest of the game.