Unlike the last time these two teams played, the Arizona Cardinals got off to a fast start. The road team started the game with two 10+ play drives that sandwiched a three-and-out by the San Francisco 49ers offense. Arizona missed the extra point to make it 9-0. On the following possession, attempting to give his offense some energy, Kyle Shanahan left the offense on the field on a 4th & 5 call, but Raheem Mostert couldn’t haul in a pass over his should and the 49ers turned it over on downs.
In the first half, it looked like Arizona was in first place. Kyler Murray ran and threw it all over the 49ers defense to put the Cardinals up 16-0. To that point, Jimmy Garoppolo had four attempts, while Murray had 19. Every stat favored the Cardinals, and San Francisco was in desperation mode.
Enter, Richie James.
A 57-yard trick play followed by a 14-yard catch and run by Kyle Juszczyk, set up a short touchdown throw to Ross Dwelley. The 49ers needed some life, and the offense, after looking defeated, came through.
A Dee Ford sack gave the ball back to the Niners, and they drove the field, highlighted by a nice 23-yard gain by Deebo Samuel. A questionable holding call on Weston Richburg cost the 49ers a touchdown. It should have been 16-14 going into the half, but Dwelley’s second touchdown was called back. A Chase McLaughlin 43-yard field goal made it 16-10.
The good news is San Francisco received the ball to open the second half. Six plays, 84 yards, and another Dwelley touchdown made it 17-16. Shanahan all but abandoned the run, but screens and quick throws made up for that. That woke the defense and the pass rush up, who got off to a slow start themselves a DeForest Buckner sack gave the 49ers the ball back.
The 49ers were driving, but Garoppolo inexplicably threw it right to the Cardinals linebacker. It feels like every interception of his is the same. He struggles to pick up the underneath defender, and that happened again on his interception against the Cardinals. That not only took points off the board for San Francisco, but the interception was returned 48 yards putting Murray and company in field goal range. The defense held the Cardinals to three points to make it 19-17.
The offense marched down the field once more. Garoppolo used his legs to find Kendrick Bourne for a first down. That was after Deebo Samuel made a highlight catch. He may have been out of bounds, but there was pass interference on the play, so it didn’t matter. Without Samuel or Sanders on the drive, we saw a heavy dose of screen passes and quick throws to Juszczyk. A touchdown toss to Bourne on a slant made it 23-19. The 49ers went for two but failed.
The Cardinals had success on the ground, and we haven’t seen that consistently all season against this defense. It wasn’t as if Arizona was doing anything tricky, just running it right at the Niners. The drive was capped off by a Murray touchdown run where Fred Warner had his eyes caught in the backfield.
The 49ers drove the field once again with the assist from Samuel, but a costly miss by Garoppolo to Dwelley led to another red-zone interception, Garoppolo’s second of the day. The ball was well behind Dwelley. The defense needed to come up with a stop, and they did just that after Arik Armstead sacked Murray on third down.
The offense took over with 2:12 left and needed a field goal to tie. The 49ers drove into Cardinals’ territory. Shanahan drew up a play that put Chandler Jones 1-on-1 with Jeff Wilson. 25-yards later, and the 49ers take a 30-26 lead — what a terrific play-call. Arizona had: 31 seconds left, but Damontre Moore forced a fumble to end it.
Garoppolo finished the game 34-45 for 424 yards. He’ll be remembered for the turnovers, though. Samuel had eight receptions for 134 yards. He gets the game ball — just another ho-hum, boring game by San Francisco. Divisional games are tough, and the 49ers won. That’s all that matters.