Adams put St. Louis in front by producing a leadoff homer in the 14th inning, but Cincinnati came back to tie it in the bottom of the frame on an RBI single from Zack Cosart.
The Reds, however, had no answer when Adams hit another blast in the 16th on a 1-0 pitch from Logan Ondrusek (3-1).
St. Louis now trails Pittsburgh by one game in the National League Central and Cincinnati remained 3 1/2 games back in third place. The Pirates lost a 9-3 decision to Milwaukee earlier in the evening.
The win went to Carlos Martinez (2-1), who worked both the 15th and 16th innings. He was the ninth St. Louis pitcher.