The San Francisco 49ers clinched the NFC West Sunday afternoon with a 45-29 win over the Arizona Cardinals at State Farm Stadium.
Quarterback Brock Purdy threw four touchdown passes and running back Christian McCaffrey had 187 total yards and three touchdowns.
The Cardinals had a good offensive game but Kyler Murray was picked off twice by cornerback Charvarius Ward, who returned one for a touchdown.
The Cardinals fell to 3-11 and the 49ers improved to 11-3.
Listen to the latest from Cards Wire’s Jess Root on his podcast, Rise Up, See Red. Subscribe on Apple podcasts or Spotify.
Cardinals open on offense, Trystan Colon remains starter at RG
The Cardinals lost the coin toss and received the opening kickoff.
Despite being activated from injured reserve on Saturday, offensive lineman Elijah Wilkinson was not the starting lineup as he was in the first six games of the season. Trystan Colon remained the starting at left guard.
McBride sets record
Trey McBride set the franchise single-season record for receptions by a tight end on the second play from scrimmage.
His 57th reception of the season was an 11-yard play. He followed it up with a 38-yard catch.
Cardinals 7, 49ers 0
right up the middle 💪@JamesConner_ x #ProBowlVote pic.twitter.com/I5U1cdeDjY
— Arizona Cardinals (@AZCardinals) December 17, 2023
The Cardinals wasted no time getting on the board. They went 75 yards on seven plays, ending with a two-yard touchdown run from James Conner, his third in two games.
Kyler Murray scrambled once for 12 yards and McBride had catches for 11 and 38 yards.
49ers 7, Cardinals 7
The wide back was wide open. #SFvsAZ on CBS#ProBowlVote x @19problemz pic.twitter.com/9xM2Ygl4WD
— San Francisco 49ers (@49ers) December 17, 2023
The 49ers had no problems moving the ball on their first possession.
Brock Purdy threw a 12-yard touchdown pass to an uncovered Deebo Samuel to cap am eight-play, 75-yard drive. Chirstian McCaffrey had 45 rushing yards on the drive, including a 26-yarder.
Charvarius Ward pick-6: 49ers 14, Cardinals 7
No. 7 takes it back for 6!@itslilmooney #ProBowlVote #SFvsAZ on CBS pic.twitter.com/y6NSWgp8Xy
— San Francisco 49ers (@49ers) December 17, 2023
Going for it on fourth down, Kyler Murray was picked off by Charvarius Ward on a throw intended for McBride. Ward returned it 66 yards for a touchdown.
49ers 14, Cardinals 10
The Cardinals get a 58-yard field goal from Matt Prater, his franchise record eight from 50 or longer this season, responding to the pick-six.
Michael Carter had runs of 19 yards and seven yards, and Emari Demercado added a seven-yard run. However, Murray was sacked and they had a delay of game, putting them a third-and-22.
McBride’s 12-yard reception got them into Prater’s range.
At that point, only tight ends had receptions for the Cardinals — three by McBride and one by Geoff Swaim, who caught it off a tipped pass intended for McBride.
McBride injures shoulder
McBride was taken to the locker room in the second quarter. He injured his shoulder. It was announced he was questionable to return.
TE Geoff Swaim hurt
The Cardinals were down to only one healthy tight end — rookie Elijah Higgins — in the second quarter. After McBride left the game with a shoulder injury, veteran Geoff Swaim injured his calf when Kyler Murray was sacked.
43- yard FG! 49ers 14, Cardinals 13
The Cardinals forced a three-and-out and then put more points on the board. Kyler Murray was sacked, setting them back, but they added three points with a 43-yard field goal after an 11-yard, 44-yard drive.
Murray kicked things off on the drive with a 15-yard run.
Brock Purdy hurt
Purdy completed a nine-yard pass to fullback Kyle Juszczck but got hurt. Dennis Gardeck hit him high and was flagged for roughing the passer and Purdy left the game. It was a left shoulder stinger.
He returned a few plays later.
49ers 21, Cardinals 13
The Cardinals scored a touchdown with 1:14 remaining in the first half as Purdy, who returned to the game after missing three plays with a left shoulder injury, threw his second touchdown pass of the game, a five-yard play to McCaffrey.
Special teams TD overturned!
The Cardinals appeared to get a huge special teams touchdown on a punt before the half. Niners returner Ronnie Bell appeared to fumble after receiving the punt. Joey Blount recovered it and returned it 12 yards for a touchdown.
However, upon review, Bell was contacted by Greg Dortch and fell down. The ball came out after his elbow touched, so the play was overturned and the 49ers retained possession with 1:03 to go in the half after the Cardinals went three-and-out.
49ers 28, Cardinals 13
The hometown kid is ballin. Brock Purdy to @CMC_22 for a 2nd time today!#ProBowlVote #SFvsAZ on CBS pic.twitter.com/R0ZieCsVLj
— San Francisco 49ers (@49ers) December 17, 2023
The Cardinals gave up another wide-open touchdown. After Purdy had a 35-yard completion to tight end George Kittle, he had Christian McCaffrey uncovered down the field and hit him with a 41-yard touchdown pass. McCaffrey caught it, fell down, got up and was still able to score untouched.
That was how the second half began.
It was McCaffrey’s second touchdown catch and Purdy’s third touchdown pass of the game.
Marquise Brown exits game
The heel injury continued to be an issue for Brown. He exited the game in the second half and was questionable to return. He was questionable to play in the game with the heel injury that has nagged him for several weeks.
Kyler Murray hurt
On the first play on offense in the second half, Murray completed a pass to Trey McBride and then went down.
He exited the game with what appeared to be an injury to his groin or in his groin area. Clayton Tune replaced him and the offense went three-and-out.
He returned on the next possession after the Cardinals forced the 49ers to go three-and-out.
Drive stalls - 49ers 28, Cardinals 16
The Cardinals added three more points on an 81-yard drive. They went 12 plays but stalled inside the 10 as a fumbled handoff between Murray and James Conner gave them a third-and-goal at the nine.
Conner had a 44-yard run on the drive.
Prater made his third field goal of the game, a 28-yarder, to pull the Cardinals within 12.
49ers 35, Cardinals 16
The 49ers responded with a six-play, 60-yard drive for another touchdown. McCaffrey scored for the third time, this time a one-yard run.
Emari Demercado TD! 49ers 35, Cardinals 22
Demercado runnin' it in for six!@Money_E3 x #ProBowlVote pic.twitter.com/LaHXHTBePL
— Arizona Cardinals (@AZCardinals) December 17, 2023
Rookie Emari Demercado busted free for a 49-yard touchdown run to keep pace with the Niners. However, they failed to convert on the two-point try.
49ers 42, Cardinals 22
Tacking on some insurance points at State Farm Stadium!@19problemz @brockpurdy13 #ProBowlVote pic.twitter.com/YPulayTnFN
— San Francisco 49ers (@49ers) December 17, 2023
Brock Purdy threw his fourth touchdown pass of the game, a 19-yard strike to Deebo Samuel to extend the lead to 20 points.
McCaffrey had rushes of 13 and 12 yards to start the drive, getting him over 100 yards for the game.
Charvarius Ward has 2nd INT
After picking up a fourth-down conversion, Kyler Murray was picked off for the second time by Charvarius Ward.
The 49ers took Purdy and McCaffrey out of the game and let Sam Darnold and Jordan Mason finish the game.
49ers 45, Cardinals 22
Jake Moody added a 43-yard field goal after the Cardinals did get the offense off the field following the interception.
49ers 45, Cardinals 29
Kyler Murray threw a garbage-time touchdown pass to rookie tight end Elijah Higgins for eight yards. It was a 12-play, 75-yard drive.
The onside kick was unsuccessful and the 49ers ran out the clock.