Cardinals upset 49ers 24-23 with game-winning field goal, 3 takeaways

The Cardinals overcame a 10-point halftime deficit to beat the 49ers, forcing three second-half turnovers.

The Arizona Cardinals shocked the NFL with a 24-23 come-from-behind win on the road over the San Francisco 49ers. They trailed 23-10 at halftime, had a field goal blocked and returned for a touchdown, but shut the 49ers out in the second half, forcing three turnovers and a turnover on downs.

Replacement kicker Chad Ryland made the game-winning 35-yard field goal with 1:37 to go and the Cardinals benefitted from the Niners losing kicker Jake Moody.

They improved to 2-3 and dropped the Niners to 2-3 on the season.

Here is how it went down.

Cardinals force three-and-out

The Niners opened the game with the ball but had two incompletions and forced Brock Purdy to scramble for two yards to start the game. With no Garrett Williams, safety Jalen Thompson played in the slot.

Cardinals 7, 49ers 0

It took two plays for the Cardinals to get on the board. They scored a first-drive touchdown for the fifth consecutive game. Kyler Murray had a 22-yard pass play to tight end Trey McBride and then took off for a 50-yard touchdown run. It was the longest run of his career.

It was so easy that at about the 45-yard line, he signaled to the sky knowing he had the touchdown coming. No one was going to catch him.

Cardinals 7, 49ers 3

Purdy connected with Brandon Aiyuk for a 53-yard pass but the Cardinals held up in the red zone. Jordan Mason had a no-gain rush, Jalen Thompson broke up a pass in the end zone for George Kittle and Krys Barnes sacked Purdy, forcing a 28-yard field goal.

49ers 10, Cardinals 7

Purdy hit Kittle for a five-yard touchdown pass to give the Niners the lead. It was a 13-play, 76-yard drive that took over seven minutes.

Cardinals 10, 49ers 10

Chad Ryland made a 30-yard field goal to tie the game. Trey McBride couldn’t hold on to a touchdown and then Murray was forced to rush an incompletion with a rusher in his face, forcing the field goal.

49ers 13, Cardinals 10

Jake Moddy made a 20-yard field goal after they couldn’t get in the end zone after getting first and goal at the five. It was another long drive, 68 yards on 11 platys.

Blocked FG for TD! 49ers 20, Cardinals 10

Ryland had a 45-yard field goal blocked by Jordan Elliott in the middle, not getting enough lift on the kick. Deommodore Lenoir picked up the blocked kick and returned it 61 yards for a touchdown to give the Niners a 10-point lead.

Niners K Jake Moody hurt

DeeJay Dallas returned the ensuing kickoff to the 38 and Moody tried to tackle him. Dallas knocked him backward and the kicker had his foot twisted under him. It appeared to be a high ankle sprain. That could impact the outcome of the game.

Nick Bosa pick!

Just outside the red zone, Murray attempted a pass to James Conner, only to have Bosa intercept it and return it 30 yards to the Arizona 40.

49ers 23, Cardinals 10

Mitch Wishnowsky, kicking for Moody, made a 26-yard field goal as time expired at the half. Kyle Juszczyk, a fullback, was the holder.

PICK! Cardinals take over in SF territory

Roy Lopez tipped a pass and Mack Wilson intercepted it off the deflection, taking over at the 49ers’ 25. The offense went three-and-out to start the second half.

49ers 23, Cardinals 13

The Cardinals could not pick up a first down but did tack on three points with a 42-yard field goal to pull within 10 points.

Turnover on downs

The 49ers had a fourth-and-23 and would have kicked a 45-yard field goal but with no Moody, they went for it and had an incomplete pass to Kittle. The Cardinals took over at their own 27.

49ers 23, Cardinals 21

Murray threw a two-yard touchdown pass to Elijah Higgins and, after a penalty for roughing the passer, James Conner ran in the two-point conversion.

Right guard Will Hernandez left the game with a leg injury.

The Cardinals pulled within two points and things got interesting.

49ers fumble! Cardinals take over

Cardinals linebacker Jesse Luketa knocked the ball out of Mason’s arm for a fumble and Mack Wilson recovered it at the Arizona nine-yard line, ending a drive that looked like would end with points.

Cardinals 24, 49ers 23

Conner got up to 86 rushing yards and Marvin Harrison Jr. had a big fourth-down catch to extend the drive. Ryland made a 35-yard kick to give the Cardinals the lead with 1:37 to go.

PICK! Cardinals win it!

The Cardinals pulled off the upset as Jalen Thompson hit Brock Purdy as he threw the ball. Kyzir White picked off the pass and the Cardinals ran out the clock for a huge win!

Get more Cardinals and NFL coverage from Cards Wire’s Jess Root and others by listening to the latest on the Rise Up, See Red podcast. Subscribe on SpotifyYouTube or Apple podcasts.