Yadier Molina and Yairo Munoz homered, Miles Mikolas threw six strong innings and the St. Louis Cardinals broke loose late to beat Arizona 8-4 on Wednesday night and take two of three from the first-place Diamondbacks.

Molina's three-run shot on the first pitch from reliever Fernando Salas highlighted a five-run Cardinals seventh inning after Arizona had nursed a 2-1 lead through six in front of a sellout crowd of 44,072.

Tommy Pham drove in three Cardinals runs with a double and two singles.

The Diamondbacks dropped to 1-5 on the homestand and lead the surging Los Angeles Dodgers by just a half-game in the NL West.

Mikolas (9-3) gave up two runs and seven hits, walked four and struck out three.

Arizona reliever Yoshihisa Hirano (2-1) had his franchise-record streak of 26 games without allowing a run end when Munoz homered on the first pitch of the seventh. Hirano gave up four runs, one earned, on three hits in two-thirds of an inning for his first loss since coming to the major leagues from Japan this season.

After Munoz's homer, shortstop Ketel Marte booted pinch-hitter Tyler O'Neill's grounder for an error. With one out and O'Neill on second, Pham singled to center to put the Cardinals up 3-2. Center fielder Jarrod Dyson hurt his leg on the play and left the game.

Salas relieved Hirano and gave up the big hit to Molina, who homered twice in the series.

The Diamondbacks went up 2-0 in the fourth.

With the speedy Dyson at second, Jon Jay singled to left. But Dyson slipped as he rounded third and scrambled back toward the base. Jay went for second on the play and third baseman Matt Carpenter, who cut off the throw from the outfield, overthrew second base, and Dyson scored after all. St. Louis made another error in the seventh and leads the majors with 71.

After Paul Goldschmidt was intentionally walked, Jake Lamb followed with an RBI single.

HARD-LUCK LEFTY

Arizona starter Patrick Corbin allowed one run and six hits in six innings, his third straight strong outing without a decision. He's given up two runs in 19 innings during those three starts.

TRAINER'S ROOM

Cardinals: Paul DeJong (broken left hand) homered and doubled and played shortstop all nine innings Tuesday night in his fourth rehab game for Triple-A Memphis. St. Louis manager Mike Matheny said DeJong would not be activated Thursday in San Francisco but could be at some time during the four-game series.

Diamondbacks: Right-handed reliever Randall Delgado (left oblique strain) was scheduled to make another rehab appearance for Triple-A Reno and is expected to be activated Thursday, the end of his rehab assignment. ... OF Steven Souza Jr. (strained right pectoral) had Wednesday off in his rehab assignment with Reno after homering twice for the Aces on Tuesday night. Souza has three homers in his last two rehab games.

UP NEXT

Cardinals: Head to San Francisco for four games against the Giants. RHP Luke Weaver (4-7, 5.16 ERA) starts for St. Louis in Thursday night's opener. Johnny Cueto (3-0, 0.84) comes off the disabled list to pitch for the Giants.

Diamondbacks: RHP Shelby Miller (0-2, 11.42), following two rough starts in his return from Tommy John surgery, takes the mound Thursday night in the opener of a four-game home series against San Diego. LHP Eric Lauer (3-5, 5.08) goes for the Padres.