After a disappointing performance last week against the Denver Broncos, 49ers coach Kyle Shanahan was clearly unhappy. But in the exhibition game many consider the closest thing to a regular-season contest, Shanahan's starting group put together its best effort, even though the backups couldn't finish the job in the second half.
Some other thoughts, notes and observations from this one:
QB depth chart: As expected, Brian Hoyer got the start and played the first half. It was a strong outing for Hoyer, who finished 12-of-17 for 176 yards with two touchdowns and no interceptions for a passer rating of 143.3. Rookie C.J. Beathard followed Hoyer and played into the fourth quarter before handing the game over to Matt Barkley. Beathard still looks like the favorite in the battle to win the backup job.
When it was starters vs. starters, the 49ers looked : Sharp. The majority of starters on both sides of the ball played the entire first half and things really couldn't have gone much better, save for some hiccups in the second quarter. The offense opened with a pair of scoring drives, including a 46-yard touchdown connection from Hoyer to receiver Marquise Goodwin. They probably would have liked more production on their other possessions but they began replacing some starters after the initial scores. The defense, meanwhile, ratcheted up the pressure on Vikings quarterback Sam Bradford, dropping him for three sacks and keeping Minnesota off the scoreboard. That group did benefit from some drops by Minnesota receivers but for the most part, the Vikings never really threatened to get into the end zone until the closing seconds of the half. All told, the 49ers' starters outscored the Vikings 14-0 and outgained them 188-134 in the opening 30 minutes. After a disappointing outing last week against Denver, the Niners helped ease some of the concerns that followed.
One reason to be concerned: The running game, at least with the starting group, still hasn't gained traction. With the first unit on the field, the Niners rushed eight times for just 21 yards with starter Carlos Hyde carrying seven times for 19 yards. That lack of production comes after the first two preseason games in which Niners runners averaged just 2.6 yards per carry on 11 attempts behind the starting offensive line. Shanahan's outside zone running scheme takes some time to coalesce, so it's best to be patient in this regard but it's still something to monitor heading toward the regular season.
That guy could start: RB Matt Breida. OK, so it's probably overstating it to say that Breida will start since Hyde looks like he's still the odds-on favorite but it's definitely worth noting that Breida was the first running back in for Hyde on Sunday night. The undrafted rookie has looked like a player with a great chance to make the roster all through the preseason but he was the only back not named Hyde to work with the starters in the first half. It's increasingly likely that he not only makes the team but is a factor in the offense.
Rookie watch: Linebacker Reuben Foster was all over the field for the Niners on Sunday night, making plays sideline to sideline. In short, Foster looked exactly like the guy the 49ers believed they were getting when they traded up to draft him No. 31 overall. He finished with eight tackles, including one for loss, and generally looked the part of a guy ready to start from Day 1. And he will. Meanwhile, No. 3 overall pick Solomon Thomas got the start at the big defensive end spot for the first time in this exhibition season. He's still chasing Tank Carradine for that job but he's starting to close the gap. Offensive lineman Erik Magnuson continues to look the part of someone who could steal a roster spot. He was the team's No. 2 center on Sunday night and can play all over the line.
Safety first: The 49ers activated projected starting free safety Jimmie Ward from the physically unable to perform list last week but coach Kyle Shanahan said on Friday that Ward would not play as the team eases him back into the mix. Still, the Niners had a different starter at free safety against the Vikings. It was Jaquiski Tartt, not Lorenzo Jerome, in with the top defense to open this one. Tartt had the first chance to step in for Ward in camp but a rib injury paved the way for Jerome, who started the first two preseason contests. Tartt had three tackles, including one for loss.
Whither Staley? Left tackle Joe Staley occupied his usual spot to start the game but came out soon after the Niners' hot start. The NBC telecast reported that Staley departed with a knee injury but he was not seen getting any sort of medical attention on the sideline and was showed walking around like he was fine. Staley is likely OK and removing him was precautionary but it's something to keep an eye on moving forward. John Theus replaced him in the lineup.
Cutting down mistakes: Nothing annoyed Shanahan more through the first two preseason games than his team's penchant for silly and costly mistakes, especially in the form of avoidable penalties and turnovers. Sunday night offered vast improvement in both areas, especially with the group that matters most: the starters. When the starting groups were in, the Niners committed zero turnovers and had just two penalties for 10 yards.
Making the Mostert of his opportunity: Raheem Mostert was considered the longest shot of the team's running backs entering camp but he has been a key special teams contributor throughout camp, including serving as the top kick returner. He bolstered his case further Sunday with two catches for 104 yards, including an impressive 87-yard catch-and-run for a score. He added 26 yards on four carries with another score on the ground. Don't sleep on his chances to steal a spot on the 53-man roster.