Updated

Daniel Descalso went 3-for-3 and broke the contest open with an eighth-inning grand slam as the St. Louis Cardinals took a 10-2 victory over the San Diego Padres in the middle test of a three-game set at Petco Park.

Descalso knocked in five runs in all and scored three times to help back a solid performance from Adam Wainwright (6-3), who allowed just one run over 7 1/3 frames. He walked one and struck out six.

"I think for the most part, I accomplished what I set out to do," said Wainwright. "Directionally, my last start out was very bad, I got back on track tonight."

Carlos Beltran drove in a pair of runs while Matt Carpenter and Allen Craig each added two hits and an RBI for St. Louis, which has alternated victories and losses in its last seven contests.

Edinson Volquez (3-5) was knocked around over six innings for San Diego, tagged for five runs on eight hits and a walk with five strikeouts.

Jedd Gyorko scored once and had three of the Padres' seven hits, with their only runs coming on an Alexi Amarista double-play ball and a fielding error in the ninth by Descalso.

The Cardinals put forth a pair of four-run innings in the fifth and eighth to provide all the support Wainwright needed and snap San Diego's three-game winning streak.

St. Louis registered six hits in the fifth, with Descalso's double scoring Jon Jay from first and breaking a 1-1 tie. After a single from Pete Kozma and a sac bunt from Wainwright, the Cardinals had two in scoring position and Beltran plated them both with a single to center for a 4-1 St. Louis lead.

"They strung some hits together in the fourth," said Padres manager Bud Black. "Beltran got a hold of his fast ball, he ran a little too much over the plate."

Matt Holliday followed with a single and Craig capped the frame by bouncing a ground rule double over the wall in right to create a four-run cushion.

After allowing a double to Gyorko and a single to Denorfia in the second, Wainwright settled in. He forfeited a run on Amarista's double play but went on to retire 16 of last 18 batters he faced, allowing just a pair of singles over that stretch.

Anthony Bass began his second inning of work in the eighth and gave up singles to Holliday and Craig to begin the frame. After intentionally walking Jay, Descalso sent a breaking pitch over the wall in right center to bust open a 9-1 lead.

Holliday added a sac fly in the ninth and Yonder Alonso scored on Descalso's error in the bottom half after reaching with a one-out single earlier in the frame.

Game Notes

The Cardinals were 6-for-10 with runners in scoring position ... Kozma ended with two hits and a run scored ... Carlos Martinez threw the last 1 2/3 innings for the Cardinals and allowed one run on three hits.