SANTA CLARA -- The 49ers just got blown out at home 31-17 by the Arizona Cardinals B-Team. Arizona's two best players on offense, Kyler Murray and DeAndre Hopkins, did not play, and yet the 49ers still got embarassed. Now they're 3-5. This loss arguably was the worst the 49ers have suffered since Kyle Shanahan became the head coach. It revealed the true problem with the 49ers: they're not good, and 2019 was a fluke.
Here are their grades for their latest loss.
He played his best, turned the ball over just once, threw two touchdown passes and the 49ers still scored only 17 points and lost by two touchdowns. Which means Garoppolo's best isn't good enough. He's not the problem with the 49ers, but he isn't the solution, either -- that's why the 49ers drafted his replacement this offseason. And that's why I said the 49ers should have started Trey Lance all season. The 49ers aren't good enough to justify not developing their first-round pick. They're a bad team that most likely is going to lose next week to the Rams, too. And every game the 49ers lose while Lance is on the bench is a waste of time. The 49ers should have traded Garoppolo last week before the trade deadline. Now they have to keep playing him simply to justify not trading him. What a waste.
RUNNING BACKS: A-MINUS.
Elijah Mitchell gained 79 yards from scrimmage but touched the ball just 13 times. After the game, head coach Kyle Shanahan said Mitchell's health was not an issue. In that case, he should have gotten the ball more frequently. He's one of the 49ers' most valuable players.
WIDE RECEIVERS: C-PLUS.
Brandon Aiyuk fumbled near the goalline, but also caught a touchdown pass and gained 89 receiving yards. Deebo Samuel played through a calf injury and gained 63 receiving yards.
TIGHT ENDS: C.
George Kittle fumbled, but also caught a touchdown pass to redeem himself. He has been a shell of himself since he signed that mega contract extension last year, which means the 49ers are paying him for stuff he did two and three years ago.
OFFENSIVE LINE: D.
They blocked well in the run game, but Shanahan decided not to run, so he featured the offensive line's biggest weakness -- pass protection. And these guys gave up five sacks. Mike McGlinchey left the game with a knee injury and his replacement, Tom Compton, should not be in the NFL. Rookie Jaylon Moore should have been the next man up, but of course the 49ers went with the terrible veteran who won't be on this team next season instead.
DEFENSIVE LINE: F.
Couldn't stop the run or pressure Colt McCoy. Offenses have figured out that the best way to neutralize Nick Bosa is to run right at him. He hasn't figured out a way to beat this strategy.
Fred Warner and Azeez Al-Shaair made James Connor look like prime LaDanian Tomlinson. Connor gained 173 yards from scrimmage. The 49ers simply couldn't tackle him. And he's the Cardinals' backup running back. Their starter, Chase Edmonds, who's much better than Connor, left the game after his first carry.
Jimmie Ward and Jaquiski Tartt both didn't play because they're injury-prone, and the backups, Tavon Wilson and Talanoa Hufanga, both gave up big plays through the air. The 49ers are so dependant on Ward and Tartt even though they're so undependable.
Josh Norman got himself benched by committing an unsportsmanlike conduct penalty to give the Cardinals an automatic first down on third and 18. Frankly, the 49ers should have benched him weeks ago. He has committed seven penalties this season and he's allowing a 101.7 quarterback rating when targeted. And his replacement, Dre Kirkpatrick, is even worse. He got ran over for a touchdown. Why did the 49ers draft Ambry Thomas? Why is he on this team?
SPECIAL TEAMS: A.
Brandon Aiyuk had a 27-yard punt return and Robbie Gould made his only field goal attempt.
DeMeco Ryans might become a good defensive coordinator one day, but he's horrendous right now. His defense can't stop the run, pressure the quarterback, tackle or cover anyone. He somehow made Colt Freaking McCoy look better than Kyler Murray. The 49ers made a huge mistake turning the defense over to him and not hiring someone with experience.
But Ryans is not the 49ers' biggest issue. Their issue is their head coach who has no answers and never blames himself for anything. After this loss, he blamed his players for not executing, which is what he does after every loss. When I asked him why fans should be optimistic about the direction of the franchise, he said, "To make a big statement like that, that's unnecessary." Wrong, Kyle. It's extremely necessary. You need to explain why you're the right man to coach the 49ers, because it's looking like you're the wrong man and the 49ers should fire you tomorrow. People are beginning to see you for what you are -- a bad head coach. You faced the second-worst run defense in the league in this game and called 46 passes and just 11 runs. That's on you.
Look in the mirror, Kyle. You put this bad team together. You drafted Javon Kinlaw, who's out for the year. You drafted Trey Lance, who didn't play in this game. You drafted Aaron Banks and Trey Sermon, who were inactive against Arizona. You drafted Ambry Thomas, who played only special teams today. And you have no first round picks in 2022 or 2023. There's no reason to feel confident about the direction of the franchise, and that's your fault, Kyle.
The 49ers should have fired you years ago.