Hopkins caught 10 passes for 144 yards with two touchdowns while Johnson was in the game.
"Disgusted that the @HoustonTexans allowed Tom Savage to return to the game after 2 plays after showing these horrifying #concussion signs (is that a seizure?) after a head impact", Chris Nowinski, co-founder of the Boston University's CTE Center, tweeted.
Meanwhile, defensive end Aaron Lynch is active for the first time since suffering a calf strain in Week 6.
Houston may turn to a new kicker this week after Ka'imi Fairbairn struggled again.More news: Qatar Fails to Save Yemen's Houthis
Johnson was taken out of the 49ers' lineup following Hopkins' 29-yard touchdown reception from T.J. Yates. He was replaced by TJ Yates after that.
After throwing two incompletions on that next drive, Savage was approached by Houston's team doctor after he returned to the sideline.
Savage is now officially out with a concussion, according to the Texans. The Texans punted on the following play. Foster remained down for a minute before jogging off the field. Veteran guard Zane Beadles started at right tackle.
-The 49ers have gone 10 games without scoring a touchdown in the first quarter.