LAS VEGAS — The 49ers defense played a game that was very unlike a 49ers defense on New Year’s Day.
As defensive end Nick Bosa said, the 49ers may have underestimated Las Vegas Raiders starting quarterback Jarrett Stidham. But, in the end, the defense got through in the 49ers’ 37-34 overtime win at Allegiant Stadium on Sunday.
Bosa pushed Raiders left tackle Colton Miller into Stidham on the throw. Safety tower Shaun Gipson intercepted the swingman and returned it 56 yards in overtime to set up Robbie Gould’s game-winning shot.
“I thought it was a good game for us,” 49ers coach Kyle Shanahan said. “We didn’t play perfectly. But still found a way to win, and I’m really proud of these guys.”
Here are the 49ers’ Week 17 victories:
Running back Christian McCaffrey had a good day himself, starting with a 37-yard run for 3 and 3 yards to open the game.
McCaffrey finished for 121 yards and a touchdown on 19 rushing attempts.
Rookie running back Jordan Mason gave the 49ers a seven-point lead with a 14-yard touchdown pass with 2:17 left. As a team, the 49ers averaged 6.3 yards rushing for 170 yards.
grade: A sort of
The 49ers’ offensive line, especially right tackle Mike McGlinchey, did a good job of suppressing the Raiders’ defensive end Maxx Crosby. The Raiders didn’t record any sacks in the game.
Purdy faces some adversity and reacts at the right time. Purdy completed 22 of 35 pass attempts for 284 yards with two touchdowns and an interception for a passer grade of 95.4.
“Today showed us this guy is on a different level,” 49ers receiver Brandon Aiyuk said of Purdy, who helped the 49ers rebound from a 10-point second-half deficit.
Aiyuk had a big day with nine catches for 101 yards and a touchdown. McCaffrey added six receptions for 72 yards.
George Kittle had four receptions for 23 yards and a touchdown.
grade: A sort of
It’s not like the 49ers defense has been pushed around like this.
Las Vegas rushed for 135 yards on 32 rushing attempts. It was the second-most yards the 49ers gave up on the ground this season.
Josh Jacobs led the Raiders with 69 yards and 17 rushing touchdowns.
The 49ers’ best run defense came when TY McGill and Charles Omenihu stopped Jacobs on fourth down near the goal line.
Gipson — with a big assist from Bosa — made the game-deciding play in overtime.
By then, the 49ers’ defense hadn’t done well against Stidham, who completed 23 of 34 passes for 365 yards, three touchdowns and two interceptions. .
The 49ers run too many screens. Raiders wide receiver Davante Adams had a big day with seven catches for 153 yards and two touchdowns.
Another big play for the defense was when Drake Jackson intercepted a pass deflected by Kyrie Hyde. It would have been a failing grade without two interceptions.
Gould is usually automatic, so it was a big surprise when he went wide to the right on a 41-yard attempt at the end of regulation. His game winning shot came from 23 yards.
Mitch Wishnowsky had just two punts in the game: His 37-yard punt helped the Raiders take field position for a first-half touchdown. He later slammed a 57-yarder that never came back.
The 49ers do not allow yards on kickoffs or punt returns.
The 49ers offense thrives with a finely tuned game plan. Coach Kyle Shanahan’s playmaking is especially effective late in the game, as the run and pass attack work together.
On the defensive end, there were too many turnovers. Defensive coordinator DeMeco Ryans has a lot to clear up this week, including the team’s pass rush, which allows Stidham to scramble in the big lane.
grade: B minus
Either the 49ers’ defense was exposed, giving future opponents a blueprint, or it was a good learning experience for San Francisco to correct its mistakes before the playoffs.
RELATED: How Purdy kept his cool in 49ers’ big win over Raiders
Take your pick.
The 49ers’ nine-game winning streak looks a lot like the 2019 game against the New Orleans Saints, when the offense showed they could win penalty shootouts when the defense struggled.
Download and follow the 49ers Talk Podcast
let name = cname + "=";
let decodedCookie = decodeURIComponent(document.cookie);
let ca = decodedCookie.split(';');
for (let i = 0; i < ca.length; i++)
let c = ca[i];
while (c.charAt(0) == ' ')
c = c.substring(1);
if (c.indexOf(name) == 0)
return c.substring(name.length, c.length);
if (getCookie('usprivacy') === '1YYN')
fbq('dataProcessingOptions', ['LDU'], 0, 0);