Liover Peguero added a two-run single, Connor Joe and Alika Williams each hit an RBI double, and Endy Rodriguez chipped in an RBI single for the Pirates, who have won two of three.
Pittsburgh starter Thomas Hatch, working as an opener, pitched three scoreless innings, allowing two hits and a walk, with one strikeout.
Left-hander Bailey Falter (1-7) followed with six one-run innings, giving up three hits and two walks. He fanned eight.
That run can on Andrew Knizner's solo homer for the Cardinals, who have lost five of six.
St. Louis starter Drew Rom (0-1), making his major league debut, gave up eight runs, six earned, and eight hits in 3 2/3 innings. He walked four and struck out four.
Pittsburgh got started early, scoring two in the first. With one out, Bryan Reynolds doubled to the wall in right. After Andrew McCutchen popped out, Joe reached on second baseman Jose Fermin's throwing error, with Reynolds going to third. Rodriguez's infield hit brought Reynolds home and sent Joe to third. Joe scored on a wild pitch.
In the third, McCutchen singled to left and went to second on Joe's walk. Rodriguez singled to left to load the bases. Palacios struck out before Peguero's single to right drove in McCutchen and Joe to make it 4-0.
The Pirates blew the game open in the fourth. Ke'Bryan Hayes led off with a double off the wall in right-center and went to third on Reynolds' groundout. After McCutchen struck out, Joe drove in Hayes with a double to center for a 5-0 lead. After Rodriguez walked, Palacios' blast to right increased the gap to 8-0. It was his fifth homer of the season.
St. Louis got on the board in the fifth when Knizner led off with his 10th homer, a shot to left field.
In the eighth, Joe hit his third double, to left-center, and Rodriguez singled to left. Palacios brought both home with a double to right-center to push it to 10-1. An out later, Williams knocked in Palacios with a double to left.
—Field Level Media