PITTSBURGH (AP) St. Louis' bullpen is a big reason why it leads the NL Central.
It just didn't work so well Friday night.
St. Louis relievers were tagged for eight runs in three innings. Their 3.64 ERA coming into the game was the second-best mark in the major leagues.
''We couldn't bring this one home,'' manager Mike Shildt said.
Last-place Pittsburgh scored each of its runs in the seventh with two outs. Josh Bell hit a two-run single off Andrew Miller. After run-scoring hits by pinch hitter Melky Cabrera and Jose Osuna, Frazier made it 7-4 when he tripled high off the 21-foot wall in right field.
''One at a time, guys put together good at-bats,'' Frazier said. ''It was pretty impressive by everybody.''
The Cardinals had won six of eight. They maintained a 2 1/2-game advantage in the division over the Chicago Cubs, who lost 7-1 at Milwaukee.
Miller (4-5) got just one out and was charged with three runs and three hits.
''It stinks losing any game, but especially these ones late in the season because they are so important,'' Miller said. ''You like to find a way to get it done. It was a pretty bad inning for us. Some balls fall. You don't get a call here. You don't get a call there. It's baseball. It happens sometimes. We'll all to go to sleep and come back and try to do a better job tomorrow.''
Tommy Edman went deep twice for St. Louis in the rookie's first career multihomer game. Miles Mikolas struck out seven while pitching five innings of one-run ball.
Pittsburgh won for the sixth time in eight games.
Felipe Vazquez got four outs for his 25th save in 28 opportunities. He struck out Edman with runners on second and third to end the eighth inning.
Starling Marte tacked on a two-run single in the bottom half, breaking it open for the Pirates.
''Just love the finish,'' Pittsburgh manager Clint Hurdle said. ''Love the battle the whole game. And then five straight hits. A lot of fun to watch our guys.''
Wei-Chung Wang (3-0) got the last two outs of the seventh for his second win in three days.
Fill-in starter Alex McRae allowed two runs and three hits in five innings for Pittsburgh. He replaced Joe Musgrove, who was scratched because of right foot discomfort.
It was the second major league start for McRae, and both have come on short notice. He was called up to pitch July 29 at Cincinnati hours after Jordan Lyles was traded to Milwaukee.
Cardinals catcher Yadier Molina extended his hitting streak to 13 games with an eighth-inning double. He is 21 for 50 during the streak.
WHAT A PLAY
Bryan Reynolds made a diving catch on the warning track in front of the 410-foot sign in left-center to rob St. Louis' Dexter Fowler of a potential extra-base hit leading off the third inning. Hurdle said it might have been the best catch he has seen at PNC Park during his nine seasons as the Pirates' manager.
Cardinals: C Matt Wieters (left calf strain) is likely to be activated either Sunday for the finale of the three-game series or Tuesday when the Cardinals open a three-game set at Colorado.
Pirates: Hurdle said it was uncertain if Musgrove would be ready to pitch when his turn in the rotation next comes up Wednesday at San Francisco. ... Rookie RHP Mitch Keller (bruised right wrist) is questionable for Sunday's scheduled start. If he is unable to pitch, James Marvel will be called up from Triple-A Indianapolis to make his major league debut. ... Marte returned after missing two games with what the Pirates described as a leg injury.
Cardinals: RHP Adam Wainwright (10-9, 4.30 ERA) will start Saturday night. He is 3-1 with a 3.49 ERA in his last five starts.
Pirates: LHP Steven Brault (4-3, 3.88 ERA) won his previous start last Sunday at Colorado, allowing two runs in 6 1/3 innings and hitting his first career home run.
Copyright 2019 by STATS LLC and Associated Press. Any commercial use or distribution without the express written consent of STATS LLC and Associated Press is strictly prohibited.