GREEN BAY, Wis. -- When this game was over, the Packers were without 11 total starters: five on offense, six on defense. That's half of their starters. But a greatly improved running game, a couple big plays in key moments and a resilient effort by a lot of backup players put Green Bay over the top.
Handing out grades following the Packers' 31-17 win over the Arizona Cardinals:
Passing Offense: B-
Even in Aaron Rodgers' own opinion, this wasn't his best game. He completed less than 50 percent of his passes (14 for 30) and missed a few open receivers. However, Rodgers did throw four touchdown passes, and that's pretty good for a quarterback not playing his best. His one interception occurred on a questionable call by the officials when Randall Cobb seemed to catch a ball on the ground before losing it into the arms of William Gay.
With Greg Jennings out and Jordy Nelson not able to make it through one quarter before suffering a new injury (add a bad ankle to his ailing hamstring), Rodgers didn't have his full complement of receivers. But Cobb once again made spectacular plays, scoring touchdowns on two of his three catches. James Jones also continued his terrific season with his eighth touchdown reception of the year. But it was tight end Tom Crabtree who had the biggest play of the game, taking a Rodgers pass 72 yards into the end zone. Tight end Jermichael Finley was targeted just twice and had only one catch for six yards.
Green Bay's offensive line performed very well, even after Bryan Bulaga's injury forced left guard T.J. Lang to slide over to right tackle. Arizona entered the game tied -- with the Packers -- for the NFL lead in sacks, but the Cardinals only took down Rodgers once.
Rushing Offense: A-
Alex Green wasn't getting the job done as the Packers' featured back in recent weeks, so coach Mike McCarthy turned to a running trio. Green, James Starks and Cobb all spent time in the backfield and each provided positive production to the offense. Starks had the most carries (17) and the most yards (61), Green had the longest run (21 yards) and Cobb had the best average per rush (9.7).
Cobb had only three runs all season prior to Sunday, but each had worked tremendously well. Cobb's three runs against Arizona showed how much McCarthy knew the running game had to get going and how much he knows that the speedy Cobb just needs the ball in his hands.
Rodgers also scrambled five times for 36 yards. His final stat line of eight rushes for 33 yards is misleading because he took a knee on the final three plays.
All in all, the Packers' 176 yards rushing was the team's most since Week 7 of the 2009 season. It was also the first time since Nov. 2, 2003 that Green Bay had four players rush for 25-plus yards.
Rushing Defense: B
Arizona hardly has a potent rushing attack, especially now with its third-string back. But the Packers' defense, playing without six starters for most of the second half, held up nicely. Once Clay Matthews had to leave the game with an injury, the backup outside linebacker tandem of Dezman Moses and Erik Walden came through for Green Bay.
Cardinals running back LaRod Stephens-Howling finished with 51 yards on 17 carries (3.0 average). His longest run was for 11 yards, and the Packers stopped him behind the line of scrimmage twice for losses. Stephens-Howling did run into the endzone for a touchdown, but that was from one yard out.
Passing Defense: B-
To grade the Packers' defensive performance, the incredible amount of injuries has to be taken into consideration. There was no Charles Woodson, no Matthews (in the second half), no Desmond Bishop, no D.J. Smith, no Nick Perry, no Jerel Worthy and no Sam Shields. So, though the Cardinals are a bad offense, Green Bay's makeshift group did well enough in a difficult situation.
Arizona quarterback John Skelton completed 23 of 46 pass attempts for 306 yards with one touchdown and one interception. Cardinals all-world receiver Larry Fitzgerald had one fantastic post-catch run for a touchdown in which he broke at least three tackles. But Fitzgerald was relatively held in check overall with six receptions for 74 yards. Arizona's Andre Roberts had a big 40-yard pass play after beating rookie cornerback Casey Hayward in one-on-one coverage. Rookie receiver Michael Floyd and tight end Rob Housler also contributed five catches each for a combined 135 yards in the passing game.
Skelton's one interception came when Hayward broke up a pass that landed in Walden's arms. The most disappointing aspect of Green Bay's passing defense was only sacking Skelton twice. The Cardinals have given up the most sacks in the NFL by a substantial margin, but the Packers couldn't take full advantage of a suspect Arizona offensive line. One sack went to defensive end Mike Neal, the other to rookie defensive lineman Mike Daniels.
Special Teams: B
Cobb provided a big 44-yard kickoff return and Tim Masthay was once again a huge weapon for the Packers' special teams. Cardinals return man Patrick Peterson is tough to contain, but Masthay's punts didn't give him much room to work.
However, Mason Crosby missed another field goal. This time it was from 44 yards out on Green Bay's opening drive. Though Crosby is great on kickoffs, his accuracy on field goals this season has been trending in the wrong direction.
With all of the injuries, the Packers came out with a win, their fourth in a row. Now they can mercifully enter their bye week and allow their seemingly never-ending list of injured players to take some much-needed time off.
The Cardinals needed this win, too. After starting the season 4-0, they're now 4-5 and in a bye week as well. But Green Bay made enough plays to win, improved to 6-3 and can soon prepare for a post-bye schedule that has five of its remaining seven matchups against divisional opponents.
Follow Paul Imig on Twitter.