Josh Johnson makes case as 49ers backup QB

With the majority of San Francisco’s starters sitting out Thursday night’s 40-13 win against the Houston Texans, the 49ers’ final game of the preseason wasn’t a very fan-friendly affair.

The game may have lacked star power, but it provided an in-depth look at the potential depth chart, positional battles and a few new looks from the 49ers on offense.

The most notable story of the evening was yet another terrible outing by quarterback Blaine Gabbert, who finished his night completing just 4-of-11 passes for 60 yards.

Gabbert, whose $2 million guaranteed contract makes it tough to cut ties with, finished the preseason with a grisly line of 22-for-47 passes completed for 186 yards, two touchdowns and two interceptions.

News like this usually results in a collective groan from fans, and presumably the 49ers front office.

But reserve quarterback Josh Johnson was on hand to salvage the night, putting together the most impressive performance by any 49ers quarterback in the preseason.

A sixth-year player stuck behind the 49ers’ rotating stable of second-string quarterbacks, Johnson finished the night an impressive 14-of-17 for 135 yards and three touchdowns.

Despite Coach Jim Harbaugh’s coy responses to questions about who will be his backup quarterback, Johnson has simply looked like the better fit throughout the preseason.

It will take a lot to convince the 49ers to give up on Gabbert’s heavy salary, but tonight’s performance is sure to earn the veteran Johnson a hard look as the No. 2.

Johnson connected with rookie Bruce Ellington in the end zone for a touchdown on his first play of the game. Ellington finished the preseason as the 49ers leading receiver, catching 12 passes for 121 yards and one touchdown. The rookie also broke off for a 44-yard punt return on his only attempt of the night.

Backup tight end and long-snapper Kyle Nelson had a standout receiving game as well, pulling in a pair of touchdown passes on play action passes from Johnson to finish the night with 15 yards on five receptions.

Johnson’s only blemish of the night came when receiver L’Damian Washington juggled a pass thrown slightly behind him, which was plucked out of his hands by cornerback Dre Hal who returned the pick for a 77-yard touchdown in the third quarter.

The 49ers’ second-team defense took the field to open the game, with nose tackle Ian Williams being the only projected starter to see playing time.

Joining them was linebacker Chris Borland, whose pugnacious play in the preseason had him in stiff competition with Michael Wilhoite in the battle to replace Novarro Bowman, who remains on the PUP to open the season.

Borland impressed while taking a healthy number of snaps, but the absence of Wilhoite throughout the game could be seen as a sign that defensive coordinator Vic Fangio has appointed him to the first team.

Borland made the most of his playing time by recording a team high six tackles, along with linebacker Nick Moody. Borland’s big play of the game came in the third quarter, when the rookie linebacker jumped in front of a pass intended for tight end Ryan Griffin on a dig route, returning the interception for a 34-yard pick six.

Running back LaMichael James struggled to pick up many yards on kick and punt returns. James made strides in his run game though, gaining 39 yards on six carries. James managed just 9 yards in his previous game against San Diego.

With both Carlos Hyde and Frank Gore sitting, the majority of snaps went to running backs Alfonso Smith and newcomer Glenn Winston. Winston — who broke off an impressive 27-yard touchdown run last week against San Diego — finished the night as the top producing back with 55 yards on 11 carries.

Winston’s legal troubles in college made him an undrafted free agent this offseason. The Michigan State product has shown a blend of both power and athleticism coming out of the backfield, and, even though most of his carries have come against third-string defenses, Winston is making a solid case for a roster spot.

Likewise, Alfonso Smith has shown a valuable mix of versatility. His 3.7 yards per attempt was the lowest among running backs in tonight’s preseason finale, but he also pulled in four catches for 27 yards.

Cornerback Chris Cook snared his team preseason-leading second interception in the second quarter when Texans’ quarterback Case Keenum airmailed a ball downfield. Cook returned the ball 33 yards to set up Johnson’s first touchdown pass.  The former 34th overall pick still is still seeking his first interception in a regular season game.

Rookie linemen Tank Carradine and Aaron Lynch hurried Houston quarterbacks all night long, logging at least one tackle for loss each possession on the night. Lynch has also shown his ability to get his hands on the ball in the air, registering another tipped pass at the line tonight.

With many of the offensive starters failing to gain any sort of rhythm or spark together, and the offensive line getting pushed around against San Diego, the 49ers enter Sunday’s game in Dallas with lots to prove before fans can exhale after a questionable preseason.

Notes

Guard Joe Looney, slated to start on the right side as Alex Boone continues his holdout, took snaps at the center position after Daniel Kilgore left the game in the first. Looney played well despite not even being listed on the 49ers’ depth chart at center. … Quarterback Colin Kaepernick will enter the first regular season game against Dallas without a touchdown drive under his belt. Kaepernick finished the preseason 12-for-22 for 115 yards.