Mark J. Rebilas-USA TODAY Sports

The San Francisco 49ers took their perfect 7-0 record to Arizona take on the Cardinals Thursday night. With a win, the team would finish up the first half of its schedule undefeated.

On the other hand, Arizona had won three of four since starting the season 0-3-1. A game that started with the Cardinals putting up a touchdown on their initial possession culminated in the 49ers winning by the score of 28-25.

Here’s a look at the biggest winners and losers from San Francisco’s eighth consecutive win to open the season.

Winner: Jimmy Garoppolo, San Francisco 49ers

Despite his team’s perfect record, Garoppolo had been inconsistent through the first seven games of the season. He responded big time with the quarterback’s best performance as a member of the 49ers. Garoppolo completed 17-of-21 passes for 172 yards with three touchdowns in the first half alone.

Avoiding the mistakes that had plagued him earlier in the season, Garoppolo threw dart after dart in connecting on all but nine of his 37 attempts for 317 yards for a career-high four touchdowns with zero interceptions. If he continues to play like this, the 49ers are going to be nearly unbeatable moving forward.

Loser: Larry Fitzgerald, Arizona Cardinals

It’s hard to do much when your quarterback puts up 15 net passing yards in the first two quarters of a game. That’s been a common theme against the 49ers’ defense this season. Even then, this future Hall of Famer was shutout in the first half of the game going up against young 49ers cornerback Emmanuel Moseley.

Fitz finished the evening catching four passes for 38 yards as he stepped it up somewhat in the second half. Even then, the veteran has caught just seven passes for 58 yards over the past three games. Kyler Murray needs more from his No. 1 target.

Winner: Kenyan Drake, Arizona Cardinals

Acquired from Miami on Monday, Drake had no time to learn Arizona’s playbook. But with injuries to both Chase Edmonds and David Johnson, he was thrusted into a starting role. Drake responded by putting up a 36-yard run on just his second play from scrimmage. He later ended that opening drive with a touchdown run.

Drake finished his Cardinals debut with 162 total yards on 19 touches. He looked absolutely dynamic in Kliff Kingsbury’s offense. As a potential long-term option, this is no small thing.

Loser: Tevin Coleman, San Francisco 49ers

After a four-touchdown performance in a blowout win over Carolina last week, Coleman just could not get his footing against a questionable Cardinals rush defense Thursday night.

Coleman put up 23 yards on 12 attempts in the game. He also lost a fumble in the third quarter, one that was reversed on replay, and dropped a would-be first down in the final stanza. The inconstancy hurt San Francisco big time Thursday night.

Winner: Emmanuel Sanders, San Francisco 49ers

We saw early and often just how much Sanders changes the dynamic of San Francisco’s offense. Remember, he scored a touchdown in his first drive as a member of the team last week. Sanders responded Thursday by catching 7-of-9 targets for 112 yards with a touchdown.

Sanders has provided Garoppolo with that necessary consistent receiving threat that doesn’t drop balls. Given how much this group has struggled in that category since the quarterback joined San Francisco, it’s no small thing.

Loser: Patrick Peterson, Arizona Cardinals

Shockingly, the Cardinals decided to have Peterson follow Sanders around the field Thursday evening. It was just the future Hall of Famer’s third game back from suspension.

However, it wasn’t Peterson’s play against Sanders that makes him a loser here. The veteran was burnt big time by Dante Pettis on a third-quarter touchdown to put Arizona behind the proverbial eight-ball down by two touchdowns. As the leader of this defense, Peterson simply needs to be better.

Winner: George Kittle, San Francisco 49ers

Despite suffering a minor knee injury early in the first quarter and not being able to finish the game, Kittle put up another stellar performance. That included this brilliant 30-yard catch-and run for a touchdown. The Pro Bowler ultimately tallied six catches for 79 yards in the 49ers’ victory.

Kittle is San Francisco’s major cog on offense. Every defense knows this. Despite that, opposing teams simply can’t contain the record-setting tight end. It’s been something to behold.

Loser: Cardinals offensve line

It became rather clear early on that the Cardinals had to change their strategy on offense to counteract an elite 49ers pass rush. That included doubling Nick Bosa on pretty much every play. Even then, the likes of D.J. Humphries and Justin Pugh struggled big time.

Kyler Murray was sacked three times and scrambled for his life pretty much all game. Couple that with multiple holding penalties, and this unit just wasn’t up to the task against San Francisco.