ST. LOUIS -- Trevor Williams didn't have his prettiest outing, but he'll take it.
Adam Frazier opened the game with a homer, Starling Marte drove in the game-winner and Williams allowed one run in seven solid innings as the Pittsburgh Pirates beat the St. Louis Cardinals 2-1 on Friday night.
Marte's RBI single off of Andrew Miller (1-2) broke a 1-1 tie in the eighth and helped the Pirates snap a two-game skid.
Williams (2-1) stranded seven runners through the first four innings, and pitched around two fielding errors in the fourth inning. He allowed nine hits and limited the Cardinals to one hit in seven at-bats with runners in scoring position.
"You really try to bear down with runners in scoring position, especially in a one-run ballgame," Williams said. "It's just pitch execution and trusting your gut and trusting your instincts and trusting your catcher and executing the pitch."
The Cardinals finished with one hit in nine at-bats with runners in scoring position, one night after getting a whopping 11 hits in that situation. St. Louis lost for the seventh time in nine games.
"He threw the ball very well, one of the best performances we've seen against us this year and he deserves credit for that," Cardinals manager Mike Shildt said. "He did a nice job. Made a lot, a lot of quality pitches all night and was able to make pitches and we weren't able to execute when we had runners on base. That's what it came down to."
The only run allowed by Williams was shift-aided. Paul DeJong grounded a slow roller to second, but Frazier was playing on the third base side of the bag and couldn't get to the ball in time to make a throw. The infield hit scored Yairo Muñoz, tying the game 1-1 in the seventh inning.
"Williams sets this whole thing up," Pirates manager Clint Hurdle said. "Seven strong, six mishit balls in the seventh inning to score a run off of him. All the outs (in the seventh) were mishit. The base hits were mishit and its 11 guys retired on three pitches or less only and one 3-ball count. This is a craftsman at work out there."
Williams pounded the strike zone, getting ahead of 25 of the 31 batters he faced.
"Hats off to Trevor," Cardinals second baseman Kolten Wong said. "He pitched a really good game. Kept us off balance the entire night. We put together some hits, man. We just couldn't drive them in."
Kyle Crick pitched out of a jam in the eighth inning with runners on first and third. Felipe Vázquez struck out Paul Goldschmidt to cap a perfect ninth and earn his 11th save.
Frazier drove a 3-2 fastball from Adam Wainwright over the right field wall to give the Pirates a 1-0 lead. It was the second time this year — and fourth time in his career — that Frazier began a game with a home run.
The Pirates' Josh Bell extended his hitting streak to 10 games in the first inning and saved a run with a diving stop on a smash by Matt Carpenter that ended the second inning.
"He's come around a lot this year defensively," Williams said. "It's gone from holding your breath to he's making the play. It's been fun to watch all the work that he's put in off the field that you guys don't see . he really takes pride in his first base and its showing this year."
Wainwright went a season-high seven innings and retired the final 10 batters he faced. He struck out eight — five looking — and allowed five hits and no walks.
It was the 250th time that Yadier Molina caught a Wainwright start, moving the duo to ninth all-time in the majors ahead of Early Wynn and Jim Hegan (1949-1957 Cleveland Indians).
Molina was presented with the 2018 Roberto Clemente Award before the game for to his humanitarian efforts in his native Puerto Rico following Hurricane Maria. Luis Clemente, the second-oldest son of Roberto, and Hall of Famer Ozzie Smith presented the award.
Pirates: RHP Chris Archer (right thumb irritation) threw a four-inning, 60-pitch simulated game to teammates Corey Dickerson, Lonnie Chisenhall and Elias Díaz on Friday. He said he had no issues griping the ball on any of his pitches.
"I threw everything, everything felt fine, no pitch was affected, body feels good," Archer said. "I'm not sure exactly where we go from here, but I'm ready to pitch five days from now in a big league game."
Cardinals: RHP Carlos Martinez (right shoulder cuff strain) threw a scoreless inning of relief, striking out two and giving up a hit, at Triple-A Memphis on Friday night. He is still considered two weeks away.
The Pirates will send RHP Jordan Lyles (2-1, 2.20 ERA) to the mound against the Cardinals and RHP Miles Mikolas (4-2, 4.02 ERA) in the third of a four-game series on Saturday. Lyles gave up one run in a season-high 6 2/3 innings in a no-decision against Oakland on Sunday. Mikolas pitched seven scoreless innings and didn't walk a batter for the first time this season against Philadelphia on Monday.
More AP MLB: https://apnews.com/MLB and https://twitter.com/AP—Sports