The Royals built a 3-1 lead heading into the bottom of the eighth, but failed to hold on and wound up losing their eighth straight game. St. Louis has won four in a row and seven out of eight.
Reliever Aaron Crow (0-1) came out to work the eighth and immediately gave up a leadoff homer to Carlos Beltran that brought the Cardinals within a run.
Crow next struck out Pete Kozma to give himself a chance to get out of the inning, but Descalso, pinch-hitting for Randy Choate, hit the first pitch he saw to center to put the Cardinals in front.
Choate (1-0) recorded the final out of the eighth to earn the win and Edward Mujica worked a perfect ninth for his 17th save.