HOUSTON -- Chris Johnson was in the middle of one rough night when he came to the plate with two runners on in the sixth inning.
One clutch swing later, and he was feeling good again.
The rookie third baseman struck out in his first two at-bats and committed an error that led to an unearned run before powering Houston to its third consecutive victory.
"That one at-bat was good, the rest of my game was awful," Johnson said.
Johnson drove a full-count pitch from Ted Lilly (8-10) to the train tracks in left field for his eighth homer, erasing a two-run deficit. Hunter Pence singled to extend his hitting streak to 10 games and Carlos Lee walked to set up Johnson's one-out drive.
Houston manager Brad Mills was impressed by Johnson's poise after the tough start.
"That's nice to see that he didn't let his whole game fall apart there with the error and the two strikeouts," Mills said. "There's still things that he can contribute even though those things can happen and it's good."
Bud Norris (7-8) pitched six innings for Houston, yielding two runs, one earned, and three hits. The right-hander struck out seven and walked four.
"I put Bud in a hole in the first inning by making the error and [Andre] Ethier hit a homer," Johnson said. "I was just glad I could do something to help us out after that."
The Dodgers have dropped six straight and eight of nine to continue to fade from playoff contention.
Ethier hit a two-run homer in the first inning to give Los Angeles the lead. Ethier's shot bounced just above the yellow line on the wall in left-center and scored Jamey Carroll, who reached on an error by Johnson.
But Norris settled down from there. Gustavo Chacin got two outs in the seventh, Mark Melancon pitched 1 1/3 innings and Brandon Lyon worked a perfect ninth for his 14th save, completing the four-hitter.
Lilly allowed seven hits in six innings, dropping to 7-2 with a 2.36 ERA in 13 career starts against the Astros. It was his first loss against Houston since June 10, 2005, when he was with Toronto.
"Lilly pitched well," Los Angeles manager Joe Torre said. "It goes back to the same old story -- we are putting so much pressure on our starting pitching that every single pitch they make is win or lose, do or die, stuff like that. Our starting pitching, for the most part, has been very good and very consistent."
John Lindsey, who was recalled for Ethier before he got to hit or play in the field on Wednesday night, made his first major league plate appearance Thursday after 15 years in the minors. The 33-year-old hit for Lilly in the seventh inning and was out on a fly ball to center field.
Thirteen members of his family, including his 3-year-old son, traveled from Mississippi to see the game.
"It's an awesome feeling," Lindsey said. "My little boy to see his dad up there. For all I know, he was playing around up there ... it was truly a good feeling to know that they were there to support me."
Torre said he plans to start Lindsey on Saturday.
- Torre kept some of his regular starters out of the lineup after the team arrived at the hotel in Houston about 6 a.m. after Wednesday night's game in San Diego.
- It had been a year and 139 days since the Dodgers last played in Houston before Thursday night.
- Astros RHP Felipe Paulino, on the 60-day disabled list with a right rotator cuff injury, threw a simulated game. "He threw the ball really well," Mills said. "We have to just wait and see how he feels tomorrow and proceed from there."