NFL · Recap
Purdy and Kittle deliver late as 49ers beat Cardinals 36-30
San Francisco’s passing game produced 0.62 EPA per play, and George Kittle’s late touchdown answered Arizona’s fourth-quarter push.
3 min read

George Kittle’s second touchdown gave San Francisco the answer Arizona had been chasing all afternoon. Brock Purdy found Kittle for 20 yards with 1:31 left, finishing a seven-play, 65-yard series that restored breathing room in the 49ers’ 36-30 win over the Cardinals on Sunday, September 27.
Arizona still moved close enough for Chad Ryland’s 49-yard field goal with 0:34 left, cutting the score to 36-30. But the decisive sequence had already belonged to the 49ers: after the Cardinals had pulled within 29-27, Purdy and Kittle turned a one-score game into a six-point final.
A fast start, then a real chase
San Francisco built its lead with two very different touchdown drives. A four-play, 80-yard opening burst took just 0:52, beginning with a short completion that became an 82-yard touchdown after a lateral. The 49ers then went 93 yards in 11 plays, and Purdy’s 23-yard touchdown pass put them ahead 14-0 early in the second quarter.
Arizona did not generate a touchdown before halftime, but it stayed connected through patience. The Cardinals ran 18 plays over 8:09 for a 26-yard Ryland field goal, then added a 41-yarder with 0:23 remaining. San Francisco answered that late scoring with a 57-yard field goal as the clock hit 0:00, taking a 17-6 lead into halftime.
Christian McCaffrey’s one-yard touchdown early in the third quarter stretched the lead to 23-6, even after the extra point missed. Arizona responded with the kind of sustained offense that defined its afternoon: a 14-play, 69-yard drive ended with Jacoby Brissett’s five-yard touchdown pass to Michael Wilson, and an 11-play march that crossed into the fourth quarter ended with Brissett’s one-yard scoring run. Suddenly, it was 23-20.
Big passes carried San Francisco
The 49ers responded to that first real threat with a 10-play, 65-yard drive, capped by Purdy’s 10-yard touchdown pass to Kittle for a 29-20 lead. Arizona again had an answer, using 14 plays and 5:47 to reach the end zone on Brissett’s one-yard touchdown pass to Jeremiyah Love. That possession made it 29-27 with 2:51 remaining and put the pressure squarely on San Francisco’s next series.
Purdy’s offense was not as consistently successful as Arizona’s by the play-to-play measure: San Francisco posted a 52% success rate to Arizona’s 56%. Success rate is the share of plays that produce positive expected points added, or EPA. But San Francisco made its successful plays far more damaging, producing 0.36 EPA per play compared with Arizona’s 0.17, with the 49ers’ passing game generating 0.62 EPA per play.
EPA measures how much a play changes a team’s expected points, and Purdy’s throws repeatedly supplied those changes. He completed 15 of 27 passes for 297 yards and four touchdowns without an interception. Kittle caught six passes for 82 yards and two scores, while McCaffrey supplied 75 yards on 15 carries and the third-quarter touchdown.
Brissett kept Arizona active to the final minute, completing 38 of 52 passes for 280 yards and two touchdowns without an interception. Wilson led the Cardinals with 11 catches for 89 yards and a touchdown, while Love carried 21 times for 90 yards before adding his one-yard touchdown reception. Arizona finished with 373 passing and rushing yards on 82 plays, but could not find the last touchdown it needed.
Late margins held
The win-probability log captured San Francisco’s late advantage on the final touchdown drive. McCaffrey’s 12-yard run to the Arizona 42 with 2:03 left moved the 49ers from an 84.4% chance of winning to 93.6%, before a three-yard loss on the next play dropped it to 85.5%. Purdy’s throw to Kittle settled the result on the scoreboard.
The 49ers are 3-0 and host the Denver Broncos on Sunday, October 4. The Cardinals are 1-2 and visit the New York Giants on Sunday, October 4.
Written with the help of AI from Keel Stats data and checked by an editor before publishing.