Defensive line. After being taken off injured reserve on Saturday, Ronald Blair started Sunday's game at defensive end and played 39 of 77 defensive snaps and finished with four tackles. Another defensive end, Tank Carradine (high-ankle), can begin practicing this week and is eligible to come off injured reserve prior to the 49ers' Week 12 game against the Seahawks. The extremely usable Leger Douzable had another strong game for someone with no team three weeks ago. He, too, started, played 56 snaps and finished with seven tackles, the most for a 49ers defensive linemen.
Others: DeForest Buckner 64, Earl Mitchell 48, Datone Jones 41, Tony McDaniel 17, Elvis Dumervil 15.
Linebackers. Reuben Foster missed two plays when he aggravated his high-ankle sprain in the third quarter. But it did not seem to affect him when he returned and he finished with a game-high 14 tackles. That, of course, had a lot to do with the Cardinals' nearly 13-minute advantage in time of possession and the fact they fed the ball to Adrian Peterson an astounding 37 times. But Foster still played well, making tackles in the middle of the field, in the backfield and along the sideline. Brock Coyle started in place of Ray-Ray Armstrong and deservedly so. He played well a week earlier against Philadelphia and had another strong outing against Arizona, playing 64 snaps and finishing with eight tackles and a pass defense. It was Coyle, not Foster, who called the plays for the defense.
Others: Eli Harold 52, Dekoda Watson 15, Mark Nzeocha 2, Armstrong 1
Cornerbacks. Ahkello Witherspoon was burned on the first play of the game, a 52-yard reception down the sideline by John Brown. But he was solid from that point forth and actually delivered one of the bigger blows Peterson absorbed all game. He and Dontae Johnson played all 77 snaps. Nickel cornerback Leon Hall played 36, many against Larry Fitzgerald, and fared well. Newly promoted Greg Mabin played one defensive snap.
Safeties. When Jaquiski Tartt broke his arm on his 19th snap, Adrian Colbert filled in the rest of the day at free safety and played 62 snaps. He finished with three tackles and drew praise from Kyle Shanahan for breaking up a deep sideline pass to J.J. Nelson. Eric Reid had an interception as well as a big hit on Drew Stanton and played all 77 snaps at strong safety. Dexter McCoil is now the team's third safety, entering games in dime situations. He played eight snaps.
Offensive line. The 49ers made the somewhat surprising decision to start undrafted Erik Magnuson at right tackle. It paid off. Both he and Trent Brown played well at the tackle spots. Center Daniel Kilgore missed one snap when he was bent over backward in a pile. Zane Beadles filled in on the enxt play. Otherwise the starting offensive line played all 74 snaps.
Receivers. Aldrick Robinson, as expected, started in place of injured Pierre Garcon and played 62 snaps. However, he caught just two of the eight passes that went in his direction. Marquise Goodwin played 67 snaps but, despite a season-high 55-yard grab, continues to be more notable for drops than big plays. Undrafted Kendrick Bourne played a season-high 40 snaps while Victor Bolden was in for six. Trent Taylor played 15 snaps before leaving with a rib injury.
Tight ends. George Kittle played 33 snaps, notable since he was limping heavily after injuring his ankle on the team's first offensive snap. Garrett Celek played 55 snaps and that was it for 49ers tight ends. Cole Hikutini played two special teams snaps but injured his MCL. The 49ers likely will have to elevate Cole Wick from the practice squad or re-sign Logan Paulsen, perhaps both.
Running backs. Carlos Hyde easily was the 49ers' best offensive player on Sunday. he played 56 snaps and added a bit of fire and feistiness whenever he had the ball. Matt Breida played 17 snaps, Raheem Mostert 1. Fullback Kyle Juszczyk played 17 snaps before injuring his neck for the second time this season.
Jimmy Garoppolo and Blaine Gabbert were the only players in uniform who didn’t play a snap on Sunday.