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.
Jordana Brewster on Paul Walker: 'He was an enormous presence in my life'
Benedict Cumberbatch's dramatic reading of R. Kelly lyrics is just what you need