Descalso went 3-for-3 and finished with five RBI and three runs scored for the Cardinals, who have alternated wins and losses in their last seven games.
Edinson Volquez (3-5) lasted six innings but took the loss with a line of five runs, eight hits and five strikeouts. Jedd Gyorko had three of the Padres' seven hits.
San Diego led 1-0 after two innings but the Cardinals tied it with a run in the third. St. Louis then broke it open with four runs in the fifth and Descalso's home run in the eighth.
Ray Liotta sues skin care company over use of likeness
Aaron Carter is still in love with Hilary Duff