The Cardinals have won three in a row, all of them in this four-game series that finishes up Thursday.
New York overcame a 2-0 deficit on Rick Ankiel's two-run homer in the seventh, but the Cardinals quickly regained the lead in the bottom half of the inning.
Descalso reached on a two-out walk and moved to third on a single by Pete Kozma. With pinch-hitter Ty Wigginton at the plate, reliever Scott Rice uncorked a wild pitch on a 1-0 offering that brought home the tiebreaking run.
Yadier Molina added an RBI single in the eighth to finish the scoring.
Seth Maness (3-0), the third of five St. Louis pitchers, was credited with the win despite giving up Ankiel's homer. Maness worked just two-thirds of an inning.
Edward Muijca turned in a 1-2-3 ninth for his 11th save.
New York starter Shaun Marcum (0-4) put Descalso on base in the seventh and took the loss in a stint that lasted 6 2/3 innings.
Selena Gomez drops F-bomb, walks off stage during Jingle Ball performance
Exploding whale video goes viral on Internet