Jake Westbrook (3-1) gave up one run over seven innings for the Cardinals. He has allowed two earned runs or less in all four of his starts this season.
St. Louis, which set season highs for runs in an inning and a game, won for the eighth time in its last 12.
Jon Jay also had three hits and drove in three runs to pace a 15-hit attack. Skip Schumaker added two hits and three RBIs, and Holliday knocked in a pair.
The Cardinals sent 12 batters to the plate in the third and chased Gallardo (1-2), who gave up eight earned runs in two-plus innings. He lost for the ninth time in 10 regular-season starts against St. Louis.
DODGERS 3, NATIONALS 2
LOS ANGELES (AP) — Clayton Kershaw won his 10th straight decision, Andre Ethier hit a two-run homer and Los Angeles beat Washington in a matchup of the top two teams in the National League.
Kershaw (2-0) allowed three hits over eight innings with six strikeouts and a walk. The league's reigning Cy Young Award winner became the first Dodgers pitcher to win 10 consecutive decisions since Ramon Martinez from August 1995 through May 1996.
Kershaw also joined Ed Roebuck and Orel Hershiser as the only Dodgers to win 12 decisions in a row at home since the franchise moved from Brooklyn to Los Angeles in 1958. Kershaw's home streak has spanned 16 starts, with a 1.22 ERA.
Kenley Jansen pitched a hitless ninth for his first save of the season.
Ross Detwiler (2-1) allowed three runs and five hits over six innings. Adam LaRoche hit a two-run homer for Washington.
CUBS 5, PHILLIES 1
PHILADELPHIA (AP) — Paul Maholm outpitched Roy Halladay to lead Chicago past Philadelphia.
Maholm (2-2) allowed a run on five hits in 6 1-3 innings, dropping his ERA from 8.36 to 6.20. Starlin Castro had two hits and an RBI, and Tony Campana had two hits and scored twice for the Cubs.
Ty Wigginton homered for Philadelphia, which has scored two runs or less in 11 of 20 games this season.
Halladay (3-2) was unhittable at the start, retiring 10 straight batters with four strikeouts, but gave up three runs on six hits in a three-inning stretch to fall to 1-5 lifetime against Chicago.
Rafael Dolis pitched two scoreless innings for his first major league save.
ROCKIES 18, METS 9
DENVER (AP) — Carlos Gonzalez was at the centre of an 11-run fifth inning, hitting a homer and a single to drive in five of his six RBIs, and Colorado overcame Scott Hairston's cycle in a wild win over New York.
Ramon Hernandez hit his sixth career grand slam — and first for the Rockies this season — and Troy Tulowitzki and Dexter Fowler also homered for Colorado, which set a season high for runs.
Hairston became the 10th player in Mets history and first in the majors this season to hit for the cycle. He drove in four runs but it wasn't enough on a night when pitching was an afterthought and the ball was flying all over the place in the Mile High City's thin air.
New York committed six errors, one shy of the team record. The 11 runs the Mets allowed in the fifth matched a club mark for one inning.
Matt Reynolds (3-0) picked up the win. Manny Acosta (0-1) took the loss.
DIAMONDBACKS 5, MARLINS 0
MIAMI (AP) — Joe Saunders pitched a three-hitter, Jason Kubel tied a career best with four hits and Arizona sent Miami to its sixth straight loss.
Kubel extended his hitting streak to 10 games. Miguel Montero drove in three runs and Aaron Hill homered for the Diamondbacks.
Saunders (2-1) struck out four and walked two, getting the third shutout of his career and dropping his ERA from 1.29 to 0.90.
Miami starter Carlos Zambrano (0-2) pitched six innings, giving up three runs and 10 hits.
The Marlins failed to get a runner past first base. They have scored six runs during their losing streak.
ASTROS 6, REDS 4
CINCINNATI (AP) — Jose Altuve drove in two runs with a triple and a double, leading Wandy Rodriguez and the Houston Astros past Cincinnati.
Jed Lowrie also had two hits for the Astros, who have won consecutive games for the first time since a three-game winning streak April 7-9.
Rodriguez (2-2) gave up two runs and six hits in six innings. The left-hander allowed only one earned run over 14 innings in his previous two starts.
Astros first baseman Carlos Lee left in the first because of a sprained left ankle and is expected to miss a couple of games.
Jay Bruce and Devin Mesoraco homered in the ninth for the Reds. Brett Myers got two outs for his fourth save.
Houston chased starter Mike Leake (0-3) with a four-run fourth.
BRAVES 6, PIRATES 1
ATLANTA (AP) — Tommy Hanson allowed one run in six innings, Dan Uggla and Chipper Jones came through in a four-run seventh and the streaking Atlanta Braves defeated Pittsburgh.
The Braves won for the 13th time in 16 games after an 0-4 start — their worst since 1988.
Hanson (3-2) worked around six hits and three walks, his only blemish an RBI single by Garrett Jones in the fourth. Kris Medlen worked the final three innings, earning his first career save. Uggla and Jones drove in two runs apiece in the seventh to break open a 2-1 game.
A.J. Burnett (1-1) went six innings for the Pirates, pitching well but not enough to prevent his eighth loss in nine career decisions at Turner Field.
PADRES 5, GIANTS 3
SAN FRANCISCO (AP) — Nick Hundley matched his career high with four hits to help San Diego beat San Francisco.
Cory Luebke (3-1) pitched six strong innings to win his third consecutive start. He gave up two runs and seven hits. Four of the Padres' seven victories have come in his last four starts.
Huston Street worked the ninth for his third save.
Buster Posey homered and drove in two runs for the Giants. Angel Pagan also connected and Pablo Sandoval extended his season-opening hitting streak to 20 games.
Eric Hacker (0-1) took the loss in his first major league start, allowing three runs over six innings.