Arian Foster rushed for 155 yards Sunday, including the go-ahead touchdown in the fourth quarter of the Texans' 17-10 win.
Johnson, Houston's All-Pro receiver, left in the second quarter with a right hamstring injury and did not return to the game, though he was back on the sideline late to watch Houston (3-1) finish off Ben Roethlisberger and the injury-plagued Steelers (2-2).
Big Ben was beat up all day, sacked five times behind an offensive line missing two regular starters. The Steelers also lost running back Rashard Mendenhall (hamstring), linebacker James Harrison (eye) and defensive end Aaron Smith (foot) during the game.
Foster, meanwhile, finally looked healthy after weeks of nursing a left hamstring strain. He broke a 42-yard touchdown run with about 12 minutes left after the Steelers rallied to tie it at 10-all. Foster finished with 30 carries.
"He stepped up for his team today," Houston coach Gary Kubiak said.
Matt Schaub threw a touchdown pass to Owen Daniels in the first half. The Texans led 10-0 at the break, and an ill-timed penalty cost them another touchdown.
On the final snap before the half, Danieal Manning blocked Shaun Suisham's field-goal attempt, and Johnathan Joseph scooped up the loose ball and ran 61 yards to the end zone. But Manning was flagged for an illegal block well behind Joseph, and the score was nullified.
Houston was on the move in the second quarter when Johnson pulled up without getting touched.
The five-time Pro Bowl receiver caught a pass, turned upfield and then fell forward near the 40-yard line, immediately clutching the back of his right leg. He limped off and walked to the locker room on his own.
The Texans seemed to lose their edge after that. The drive stalled and Neil Rackers kicked a 22-yard field goal for a 10-0 lead. Rackers improved to 10-for-10 this season.
Schaub threw a 30-yard pass to Daniels to the Steelers 42 early in the fourth. Foster took it from there, breaking outside and outrunning the Pittsburgh secondary to the end zone.
Johnson was back on the sideline for the final 10 minutes and he watched Houston's defense finish it off.
Antonio Smith and Mario Williams sacked Roethlisberger, and linebacker Connor Barwin swatted away Big Ben's fourth-down pass with 2:38 left.
The Steelers had one last gasp after Houston had another touchdown wiped away by a penalty. Joseph intercepted Roethlisberger's pass from the end zone and returned it for a score, but rookie J.J. Watt was flagged for roughing the passer. Roethlisberger was slow to get up, but finished the game.
The Texans got an interception that counted by Jason Allen to end the drive and clinch the win.
Another Houston penalty in the first half wiped out a sack and forced fumble by Barwin.
The Texans dominated the first half, with Foster setting the tone on the first drive.
The 2010 NFL rushing champion ran over, around and through the Steelers' defense, gaining 41 yards in all. He had a pair of 5-yard runs to the Pittsburgh 1, and with the Steelers keying on him, Daniels was open and Schaub found him for an easy touchdown.
The score finished a 19-play drive that consumed 10 minutes, 55 seconds, both franchise records.
Williams sacked Roethlisberger on the fourth play of the second half. But Pittsburgh's line starting holding up better, and Roethlisberger threw a 23-yard pass to Antonio Brown to the Houston 15. Mendenhall scored on a 3-yard run, his last play before leaving with the injury.
Backup Isaac Redman broke an 18-yard run across midfield to start the Steelers' next series. Pittsburgh chewed up the last five minutes of the third quarter with the drive, and Suisham tied it with a 26-yard field goal.