In the bottom of the fifth, Votto hit a two-run double, and Ross capped the inning with a two-run homer, giving him 16 homers this season.
Jeff Keppinger hit a sacrifice fly in the fourth for Cincinnati’s first run.
Norris Hopper had four hits, and Votto three for the Reds, who have won five of six to move three games behind the Cardinals for third place in the National League Central.
Winner Aaron Harang (15-4) yielded three earned runs and three hits in seven innings with two walks and five strikeouts.
Closer David Weathers earned his 30th save.
St. Louis got a hit and two RBI from Albert Pujols, and one RBI each from two others.
David Eckstein had two hits for the Cardinals, who were winless during a seven-game road trip.
The losing pitcher was starter Kip Wells (6-17).