If we learned anything about the Texans on Saturday night at Reliant Stadium, it’s that we shouldn’t take a restroom break when Trindon Holliday is returning a kickoff or punt.

Holliday’s 87-yard punt return was one of several things the Texans did well in their 20-9 preseason victory over the San Francisco 49ers.

But the Texans did just enough bad things to show the players and coaches they better improve in practice and in the last two preseason games if they’re going to get off to a successful start and become a Super Bowl contender.

Let’s be honest here: The Texans and 49ers tied 3-3 when their starters were playing.

“When the (starters) were in, it was a physical game,” Texans coach Gary Kubiak said. “I was happy the way we finished the first half.”

On the last drive before halftime, quarterback Matt Schaub guided the offense to its only touchdown, a 9-yard pass to Lestar Jean. But it came against San Francisco’s second-team defense.

That series allowed Schaub to finish with impressive statistics — 11-of-14 for 128 yards and a touchdown.

“Matt’s headed in the right direction,” Kubiak said. “You can see him getting more comfortable each time he goes out.”

Like everyone else, Kubiak and Schaub were happy to see No. 80 back on the field.

Andre Johnson caught two passes for 49 yards before taking off his pads. On the most exciting play — other than Holliday’s Billy “White Shoes” Johnson impersonation — Johnson beat double coverage on a 43-yard reception.

He looked like the Andre of old and not an old Andre, as some have called him because of his nagging injuries.

Johnson was placed on a play count by Kubiak, and after he retreated to the sidelines, Jean worked with the first team.

Jean had four catches for 42 yards. He and rookie Keshawn Martin (three for 36) are in a battle royal for the third spot behind Johnson and Kevin Walter.

It’s looking more and more like depth at receiver won’t be a problem.

The only troubling thing about the offense was the inability to get Arian Foster going until the last drive of the first half. Foster was hamstrung by some poor blocking until he broke free for a 24-yard run on the touchdown drive. He finished with 10 carries for 46 yards, but subtract the 24-yarder, and he gained 22 yards on nine carries.

The run blocking better improve, and it better improve fast.

Like against New Orleans at the Superdome on Saturday night.

At some point soon, the coaches need to decide who the starting right tackle is — Rashad Butler or Derek Newton. Butler played better against the 49ers.

Now, let’s look at a defense that ranked second last season. The starters didn’t allow a touchdown for the second consecutive game, but stopping the run was a lesson in futility.

In the first half, the 49ers gouged the Texans for 94 yards rushing. Check out these averages per carry by five Niners: 7.7, 7.0, 6.0, 12.0 and 8.0. They averaged 6.7 yards on 14 carries.

The defense got blown off the ball.

“We have to tackle a lot better,” Kubiak said.

You’d imagine defensive coordinator Wade Phillips will find a way to fix what ails the run defense before their appearance at the Superdome on Saturday night.

The most impressive thing about the defense was the way it circled the wagons when threatened deep on its half of the field.

The only points the 49ers could muster came on three David Akers field goals, including one from 55 yards.

Oh, and about Joe Marciano’s special teams. He’s been saying for two years that Holliday could be a dynamite returner for two years. Now Marciano looks like a prophet.

Here’s something to chew on until the New Orleans game: Veteran Shayne Graham kicked field goals of 48 and 49 yards, and rookie Randy Bullock was wide right from 51 yards.

Could the Texans have a kicking controversy? Grizzled veteran vs. highly touted fifth-round pick? You bet. Grizzled vet is leading.

By the way, there’s something else we learned Saturday night: Guess who made the team as the sixth receiver? If you guessed Holliday, go to the head of the class.

john.mcclain@chron.com
twitter.com/mcclain_on_nfl

Three thumbs up
No TDs: The first-team defense didn’t surrender a touchdown for the second consecutive game.
Accurate: Quarterback Matt Schaub looked better than he did in the first game, going 11-of-14 for 128 yards and a touchdown.
Coming along: Andre Johnson played 1½ quarters and caught two passes for 49 yards. Beat double coverage on a 43-yard pass from Schaub.

Three thumbs down
Bent: The starting defense allowed the 49ers 94 yards rushing in the first half, a 6.7-yard average.
Inconsistent: Arian Foster carried 10 times for 46 yards, but subtract a 24-yard run and he had nine carries for 22 yards.
Tough break: Quarterback Case Keenum was supposed to play 1½ quarters, but because of the way the game went, he didn’t get into the fray until seven minutes remained.