GLENDALE, Ariz. - Jimmy Garoppolo threw for 317 yards and four touchdowns and the San Francisco 49ers reached the halfway point of their season undefeated, beating the Arizona Cardinals 28-25 on Thursday night.
San Francisco (8-0) fell behind 7-0, but responded with three touchdowns - one as time expired in the second quarter after Cardinals coach Kliff Kingsbury called a timeout and gave the 49ers a second chance on fourth down - to take a 21-7 halftime lead.
The 49ers were in control until about five minutes left in the fourth quarter, when Andy Isabella caught a short pass and sprinted for an 88-yard touchdown to help the Cardinals pull to 28-25.
But the 49ers were able to run out the clock on their ensuing offensive drive to end Arizona's comeback. San Francisco's Emmanuel Sanders caught seven passes for 112 yards and a touchdown.
Arizona (3-5-1) lost its second straight game. Rookie quarterback Kyler Murray threw for 241 yards and two touchdowns.
The Cardinals came into the game without their top two running backs, David Johnson and Chase Edmonds, who were battling injuries.
Kenyan Drake - who was acquired by the Cardinals on Monday in a trade with the Miami Dolphins - ran for 36s yard on the first play of the game and capped the opening drive with a 4-yard touchdown run. He finished with a team-high 110 yards rushing and 52 yards receiving.
Arizona looked as if it was about to escape the first half trailing 14-7 after San Francisco's Jeff Wilson Jr. was stopped on fourth down just shy of the goal line with a few seconds remaining in the first half.
But there was one major problem for the Cardinals: Kingsbury called a timeout just before the play began.
The 49ers converted on their second chance when Garoppolo hit Sanders for a 1-yard touchdown pass and a 21-7 lead.
San Francisco's off to an 8-0 start for the second time in franchise history. The Niners won 10 straight games to start the 1990 season.
This year's streak has included five road wins. The 49ers have three straight home games starting with the Seahawks on Nov. 11.
The 49ers got a scare early when star tight end George Kittle left the game after taking a helmet to the knee. But the third-year star quickly returned and responded with a 30-yard touchdown catch late in the first quarter to tie it at 7.
49ers: Defensive lineman Arik Armstead left in the first quarter with a throat injury but returned to the game. ... Linebacker Kwon Alexander had a chest injury in the second half and didn't return.
Cardinals: Defensive lineman Clinton McDonald left with what a "stinger" in the third quarter.
San Francisco returns home to face Seattle on Nov. 11 for a Monday night game.
Arizona travels to Tampa Bay on Nov. 10.