The Green Bay Packers found a way to scrape out a win against the Carolina Panthers on Sunday at a snowy Lambeau Field, running the ball through the Panthers defense with abandon. The 24-16 victory was a crucial one, especially as the Saints loss opened the door to a potential first-round bye and as the Vikings kept pace a game back with a win over the Cowboys on Sunday night.

One big factor in Sunday’s game was the return of safety Ibraheim Campbell from the PUP list. The Packers have struggled to find consistent contributors at the second inside linebacker spot next to Blake Martinez all year, a position where Campbell flashed a season ago in his brief time on the field. In this game, he helped solidify that spot, providing solid coverage ability in the middle while still playing big enough to help against the run.

Although the defense did give up 400 total yards, it made the critical stops when it needed to, with a turnover and a goal-line stand inside the red zone.

Meanwhile, the offense got its top receiver back, but the passing game went almost exclusively through Davante Adams. Marquez Valdes-Scantling was nowhere to be seen, as he suited up on just 11 plays. His injuries must be a factor right now, particularly on the slushy Lambeau Field turf on Sunday, but his role was scaled way back in this game even as Aaron Rodgers connected on some deep balls to other players.

Here are the playing time numbers from Sunday.

OFFENSE (68 plays)

Quarterback

Aaron Rodgers 68

In this game, Rodgers did much of his damage with big plays. His three longest passes combined for 123 yards, more than half of his total. Rodgers finished the day 17-for-29 for 233 yards, with no touchdowns or interceptions. He also was sacked just twice.

Running Backs

Aaron Jones 34, Jamaal Williams 34, Danny Vitale 13

While the backs were non-factors in the passing game — Williams and Vitale had just one target each and no receptions — the tailbacks did their part on the ground. Jones carried the football 13 times for 93 yards, a 7.2-yard average, and scored all three of the Packers’ touchdowns. Williams also had 13 totes, and though his 63 yards were less impressive, he still averaged 4.8 yards per carry. Combined, they outplayed Christian McCaffrey, who picked up 108 yards on 5.4 yards per carry and just one touchdown.

Wide Receivers

Davante Adams 54, Geronimo Allison 42, Allen Lazard 30, Jake Kumerow 23, Marquez Valdes-Scantling 11

Adams’ second game back on the field after his injury showed that he is definitely getting back to full strength. He caught a 38-yard and a 37-yard pass from Rodgers, finishing with seven catches on 10 targets for 118 yards. That now gives him three 100-yard games this season and four games with seven or more catches. While he still has yet to find the end zone, he got himself back on pace for a 1000-yard season.

The rest of the receivers struggled in this game. Lazard was next best with three receptions for 27 yards (though he had a drop leading to the three-and-out on the Packers’ first drive), while Kumerow caught both of his targets for 23. Allison had three receptions for just six yards. At this point, Lazard should be getting Allison levels of snaps, given their level of production in recent weeks.

Notable by his absence was MVS, who had just one incomplete target all game. The 11 snaps were a season low, and it appears that his knee and ankle injuries are affecting him fairly significantly.

Tight Ends

Jimmy Graham 44, Marcedes Lewis 38, Jace Sternberger 15

Graham, who took a 21-yard pass over the middle and rumbled for 27 yards after the catch, ended up over 50 yards receiving for the third time this year. He did so on just two receptions, however, picking up 11 on his other catch. Sternberger’s snaps are increasing a bit, as he was moved all over the formation when on the field.

Offensive Linemen

David Bakhtiari 68, Elgton Jenkins 68, Corey Linsley 68, Billy Turner 68, Bryan Bulaga 68, Lucas Patrick 2

The Packers’ line paved the way for the running game in this one, with all of the starters suiting up on every snap. Patrick stepped out for a couple of plays as an extra blocker. All told, Rodgers was sacked just twice and took five hits.

DEFENSE (73 plays)

Defensive Linemen

Kenny Clark 63, Dean Lowry 35, Tyler Lancaster 19, Montravius Adams 15, Kingsley Keke 11

Up front, the Packers used a one- or two-man line for much of the game, particularly once they got up by two possessions and the Panthers needed to go to the passing game. Clark was in on all of the high-leverage plays, however, including basically the entire final drive. He finished the game with four tackles, including one for a loss, while Lowry added three stops. Adams had two tackles, but broke up a pass at the line of scrimmage and fell on an aborted snap in the first quarter, giving the Packers’ offense the ball near midfield.

Outside Linebackers

Za’Darius Smith 64, Preston Smith 62, Kyler Fackrell 29, Rashan Gary 16

The Smiths terrorized Kyle Allen all day, as Preston had two sacks to reach double digits for the first time in his career. Both of his sacks came on third downs, and he finished with four total hits on Allen. Za’Darius had just one assisted tackle, but landed three hits on Allen. Meanwhile, Fackrell made arguably the biggest play of the game, knifing through the line to stuff McCaffrey on the final snap until Preston Smith could help clean him up just short of the goal line.

Inside Linebackers

Blake Martinez 73, B.J. Goodson 20, Oren Burks 4

The Packers lined up with Martinez and Goodson early on, but swapped the run-stuffer out for safety Ibraheim Campbell for much of the second half. Martinez ended with seven tackles, while Goodson had a pair.

Safeties

Adrian Amos 73, Darnell Savage 73, Ibraheim Campbell 42, Will Redmond 5

Amos’ pass breakup on a two-point conversion attempt will not go in the stat sheet, but it looked to be a huge play at the time. He did finish with six tackles and another pass breakup, while Savage had five tackles.

Campbell’s return to the field was a welcome one, however, as it allowed Amos to stay back at his normal safety spot. Campbell finished the game with six tackles of his own and a forced fumble, when he stripped McCaffrey on a run to the second level. Though the Panthers fell on the football, it was a great sign for the returning safety, who looks to be a major contributor as a nickel and dime safety moving forward.

Cornerbacks

Jaire Alexander 73, Kevin King 73, Tramon Williams 53

While the Packers played three safeties for much of the game, they also lined up with three corners, trying to find the best matchups against McCaffrey, who is adept at receiving out of the backfield. King ended up with nine total tackles to lead the team, including one for a loss on a screen pass and a pair of pass defenses. Alexander had one breakup and six tackles, while Williams picked up a huge play — an interception in the end zone on a deflected pass.