Updated

Jose Altuve put the Houston Astros on top with a three-run homer in the second inning and they held on for a 5-4 win over the St. Louis Cardinals on Friday night.

The win is the fourth straight for the Astros and the second consecutive loss for the National League Central-leading Cardinals.

The game was tied at 2-2 before Altuve's shot, which a fan in the top row of the Crawford Boxes in left field caught, to give Houston a 5-2 lead.

It was another good night for Altuve, who is among the top batters in the NL with a .360 average this season.

Houston starter Lucas Harrell (2-2) gave up seven hits and four runs in 5 1-3 innings. Closer Brett Myers allowed one hit in a scoreless ninth for his seventh save after three other relievers combined to pitch 2 2-3 scoreless innings.

Kyle Lohse (4-1), who started the season 4-0 for the first time in his career, had his worst outing of the season. He yielded seven hits and five runs — both season highs — in a season-low five innings. Three of his runs were earned the others came thanks to two errors by the Cardinals.

Lohse was unable to build on the success he had last season against the Astros when he was 2-0.

Jordan Schafer reached in the first inning on a fielding error by Matt Carpenter. Altuve followed with a single and the pair advanced on a double steal. A single by Carlos Lee scored Schafer before Jed Lowrie's single sent Altuve home to make it 2-1.

The Cardinals took a 1-0 lead in the first after Rafael Furcal singled and scored when Allen Craig reached on an error by Chris Johnson with two outs.

The miscues continued in the bottom of the second when Schafer reached on an error by Craig, the first baseman, after a single by Harrell. That set up Altuve's home run.

Carpenter walked with one out in the second inning and later scored on a balk by Harrell to tie it at 2-2.

Jon Jay singled and scored on a triple by Matt Holliday that landed near the bullpen in right center to get St. Louis within 5-3 in the third inning. Harrell was a bit shaken up after landing hard on his chest after diving to try and grab the hit by Jay. He was looked at by trainers and remained in the game.

Holliday scored on a sacrifice fly by Craig to cut the lead to 5-4.

The Astros had a chance to add to their lead in the seventh inning after Brian Bogusevic walked after a two-out double by Lowrie. But Johnson grounded out to end the threat.

Yadier Molina singled in the sixth inning before a walk by Skip Schumaker with one out chased Harrell. He was replaced by Wesley Wright, who retired the next two batters to escape the jam.

Schafer walked with two outs in the eighth inning. He has reached base safely in each of the 25 games he's played this season — tying the longest streak to start a season in franchise history. Denis Menke also reached the mark for the Astros in 1969.

He stole second base for his 11th steal of the season before a fly out by Altuve ended the inning.

NOTES: St. Louis OF Carlos Beltran wasn't in the lineup Friday because of soreness in his right leg, but pinch-hit in the eighth inning. Manager Mike Matheny expects him to be back in the lineup on Saturday. ... Lance Berkman, on the 15-day disabled list with a pulled left calf, experienced some discomfort when he ran on Friday. Matheny said they'll let him rest on Saturday and possible try it again on Sunday to see if he feels better. ... Houston wore the shooting star jerseys the original Astros team wore in 1965 as they continued the celebration of the 50th anniversary of the franchise. Rusty Staub, who played for the Astros in 1965, threw out the first pitch.