The Green Bay Packers are 8-4 and sitting atop the NFC North. They’ve won six of their last seven and have their sights set on securing a playoff berth. Still, they haven’t put together a complete, impressive performance since their Week 6 triumph at Houston.

They’re winning, but they’re not looking very good doing it.

It was the same on Sunday at Lambeau Field, where Green Bay surmounted a superhuman effort by Vikings RB Adrian Peterson to muster an unremarkable 23-14 victory over Minnesota.

Gashed on the ground by Peterson, who rushed for a season-high 210 yards, the Packers cashed in on a pair of gaffes by Vikings QB Christian Ponder to win a crucial divisional game. Morgan Burnett’s two interceptions were the difference, as coach Mike McCarthy said.

As has surprisingly been the case several times this season, the defense picked up the offense, which, with the help of a few much-needed field goals, found some nice balance and scored enough points to win. Here’s how the Packers graded out against the Vikings:

Offense: B

By now, it’s clear this is a different unit than last year’s record-setting group. The 2011 version averaged 35 points a game, but this one has to sweat to score 23 against a mediocre defense.

QB Aaron Rodgers, the reigning MVP, has been harried by opposing pass rushes, stymied by cover-2 defenses and isn’t registering the weekly 130-plus passer ratings of last year. The offensive line and wide receiver groups have been beset by injuries to key players; neither has looked totally in step. And, week to week, you never know what you’re going to get from the inconsistent rushing attack.

Against the Vikings, they racked up 435 yards. Rodgers passed for 286 yards and the run game added 152. But all that production resulted in just two touchdowns. The Packers have been one of the most adept teams in the league in recent years at scoring inside the red zone, but on Sunday they settled for field goals instead of getting in the end zone.

The positives included RBs James Starks (4.4-yard average) and Alex Green (4.8) effectively splitting carries in the backfield, with Starks’ 22-yard touchdown in the third quarter marking the Packers’ first rushing score since Week 5. The offensive line, still adapting to the season-ending loss of RT Bryan Bulaga (hip), played well even after Bulaga’s replacement got hurt and had to leave the game in the second quarter. T.J. Lang’s ankle injury could have been calamitous for Green Bay. But undrafted rookie Don Barclay stepped in and provided above-average run blocking and passable pass protection.

WR James Jones’ 32-yard circus catch in the first quarter, his ninth touchdown of the season, was yet another jaw-dropper to add to his 2012 highlight reel. TE Jermichael Finley, a mercurial player on and off the field -- his postgame quotes can be spicy or as bland as they were Sunday when he said things like, "I think the Packers and the offense played great today, and I'm just glad to be a part of it," -- exploited the middle of the field with six receptions for 60 yards. The Packers had WR Greg Jennings, who underwent abdominal surgery a month ago, running routes for the first time since Week 4, but fellow wideout Jordy Nelson reinjured his hamstring and is probably out a couple of weeks. Previous game’s grade: D

Defense: B-

All week long, the Packers gushed about Peterson. Defensive linemen called him a “beast” and a “monster,” cornerbacks discussed the importance of gang-tackling him and coaches spoke about him in reverential tones. The Vikings offense revolves around Planet Peterson, and the Packers knew that. Still, they couldn’t stop him.

Peterson rushed for 210 yards, including runs of 82, 48 and 23 yards. Take those three away, of course, and Green Bay held him to 57 yards on the other 18 carries. But, as McCarthy noted, you don’t grade on a curve just because it’s the league’s leading rusher in the backfield. There were far too many missed tackles -- a “double-digit” number, according to McCarthy -- and they were especially conspicuous on Peterson’s long runs. The defensive line didn’t disrupt, the linebackers didn’t penetrate and the secondary didn’t tackle.

But, as was so often the case last year when the Packers had the worst pass defense in history but led the league in interceptions, the unit made plays when it had to. Burnett, who entered the game without an interception, had two, including what McCarthy called the “key play” of the game early in the third quarter. Burnett picked off an ill-conceived pass from Ponder in his own end zone and, on the Packers’ ensuing possession, they kicked a field goal that swung the momentum. His second interception was a thing of beauty, as he accelerated and dived in front of TE Kyle Rudolph, the Vikings’ only real receiving threat all day. Previous game’s grade: D-

Special Teams: B+

Perhaps emerging from the worst slump of his career, K Mason Crosby made three field goals Sunday, nine points that proved to be the Packers’ margin of victory. Crosby hit from 47, 31 and 30 yards, though he missed a 53-yard attempt just before halftime that left him 1 of 7 from 50 yards and beyond.

Because of that miss and after putting the second-half opening kickoff out of bounds, Crosby almost wasn’t given a chance to attempt the 47-yarder midway through the third quarter. On fourth-and-7, McCarthy was about to go for it, but the Vikings called a timeout and he then decided to kick the field goal. Undeterred by McCarthy’s momentary misgiving, Crosby converted a “big, big kick for him,” as P Tim Masthay said after the game.

After each kick, the crowd roared, and his teammates mobbed him. At one point, Crosby could even be seen flashing a little smile. He said in the locker room that he felt “great.” With his own confidence back and that of his coach possibly returning, too, Crosby may have finally snapped out of his funk.

For his part, Masthay was solid as usual. He averaged 41.5 yards on four punts, landed one inside the 20 and limited Vikings returner Marcus Sherels to one yard. Packers return man Randall Cobb was ordinary; the coverage units were excellent. Previous game’s grade: C+

Coaching: B+

For the first time in the last three games, McCarthy didn’t publicly admonish his own play-calling afterward. He was pleased with the running game, thought the defense wasn’t good enough against Peterson, called Burnett’s interceptions the key plays and said it was a good win against a tough divisional opponent.

The Packers scored a touchdown on their first possession and got a field goal on their second. That indicates a good opening-game script. McCarthy adapted well to Lang’s second-quarter injury, giving Barclay blocking help with tight ends and chipping running backs. He also used Barclay’s physical run-blocking ability and rushed effectively to the right side often, including on Starks’ touchdown. Sometimes, it seems, McCarthy doesn’t make adjustments, or does too slowly, but Sunday’s game he was ahead of the game.

One question does remain: Was he really going to go for it on fourth-and-7 trailing in the fourth quarter rather than let Crosby attempt the field goal he ultimately made?

It’s tough to fault defensive coordinator Dom Capers for Peterson’s herculean effort. It’s not as though he thumbed his nose at the phenom. Still, allowing any running back to go off for more than 200 yards is bad. And getting only one QB hit and no sacks from your pass rush indicates a lack of ingenuity, even though the Packers were still without LB Clay Matthews. Fortunately, Green Bay was defending against a substandard quarterback in Ponder, so it didn't get burned. But Capers has to be more aggressive. Previous game’s grade: D+

Follow Packers reporter James Carlton on Twitter: @CBSPackers and @jimmycarlton88.