The 49ers received the opening kickoff and looked as if they were going to drive the ball down the Cardinals’ throat, but a missed block by George Kittle put them behind the sticks, and instead of going for it on fourth and short, Kyle Shanahan settled for a 52-yard field goal. Robbie Gould nailed it, and that put the Niners up 3-0. After the 49ers forced a three-and-out, Raheem Mostert showed off his track speed by running a Texas route and beat rookie Isaiah Simmons for a 76-yard touchdown. That play reminded us of how fast Mostert is. It’s remarkable to see.
As well as the game started, two rushers snuck through on a punt and blocked Mitch Wishnowsky’s kick. One play later, Arizona punched the ball in for a score to make it 10-7. The one thing San Francisco couldn’t afford to do was give the Cardinals “cheap” points.
After one quarter, the Cardinals had three yards rushing and were averaging 3.4 yards per play, compared to the 49ers 9.2 yards per play. That one special team’s blunder was the only reason the game was close.
The second quarter was quiet, though it shouldn’t have been. The 49ers had an opportunity to punch it in on 4th and goal, but Mostert was stuffed short of the goal line. I thought he had a chance to go airborne on the play, especially with how fast he builds up speed. The second quarter was sloppy, but Jimmy Garoppolo was off target and appeared to be flustered in the pocket. The most egregious throw came to George Kittle, who ended up leaving the field before the half. There were no injury updates on Kittle, but it looked like he hyperextended his knee. Both teams exchanged field goals to make it 13-10 in favor of the 49ers headed into the halftime.
The 49ers opened the second half with some sloppy play. Both linebackers missed tackles, but Kwon Alexander looked lost on a couple of occasions. Thankfully, the Cardinals kicker missed two 50+ yard attempts. The 49ers could not capitalize, however, as Jimmy Garoppolo had a rough couple of series. Bourne came through on the ensuing drive with a big-time catch in traffic, but the 49ers still couldn’t move the ball and were forced to punt. There was no rhythm on offense at all. Yes, the Niners were without Brandon Aiyuk and Deebo Samuel, but you can’t go 1-for-9 on third downs through nine drives. That’s unacceptable.
The game continued to be sloppy as the referees did not help that matter as they made a few terrible questionable calls. Garoppolo was frustrating as he missed multiple open receivers. On the other side, Kyler’s athleticism made life difficult for the defense, and a 22-yard touchdown run highlighted that. The 49ers answered in a big way, thanks to a long 41-yard reception by Kyle Juszczyk. Shanahan came back to that play as Juice was open in the previous quarter, but Garoppolo missed him. After a pass interference call, Jerick McKinnon scored to give the league 20-17.
It didn’t take long for Arizona to answer, as the Niners had no answer for Hopkins, who they left open on a third down. One play later, Arizona scored, and that gave them the lead. To this point, Hopkins had 14 receptions for 151 yards, and yet, somehow, San Francisco left him uncovered. That score gave the Cardinals a 24-20 lead, and the Niners had to answer, or else they’d likely lose.
The 49ers came out and ran the ball well while milking the clock to ensure the Cardinals had little to no time left. By the two-minute warning, the 49ers were on Arizona’s 42-yard line. The offense had an opportunity to score and Shanahan had a perfect play-call drawn up, but Garoppolo put too much loft on the pass which allowed the defender to catch up and make a play. That play felt like the story of the game: too many blown opportunities. The Niners had one final chance, but Garoppolo was late and inside on an out route. That was your ballgame.