Ross, a first-time All-Star, won his third straight start by holding St. Louis to one run and four hits in six innings. He struck out seven, including fanning the side in his last inning. It was the eighth time Ross (10-10) went six-plus innings and allowed two or fewer runs, the second-longest such streak in the majors.
Gyorko returned Monday from a 44-game stay on the disabled list with plantar fasciitis. His run-scoring single to left off Lance Lynn came just as it seemed the Padres would strand two runners.
Solarte, obtained from the New York Yankees in the Chase Headley trade, homered into the short porch in right with two outs in the seventh. It was his second with the Padres and eighth overall.
The Cardinals had tied it 1-1 on Kolten Wong's sacrifice fly in the fifth. Matt Holliday grounded to third baseman Solarte, who threw home to get Matt Carpenter for the second out on a play that was upheld on a crew chief's review. Carpenter avoided the tag after Rene Rivera caught the ball and blocked the plate, but he also missed the plate and Rivera tagged him out.
Crew chief Brian Gorman, the second base umpire, initiated a review to make sure Rivera didn't violate the new collision rule.
Lynn (11-8) allowed two runs, one earned, and four hits in six innings. He struck out six and walked three.
Padres: Right-hander Ian Kennedy, who missed his scheduled start because of a left oblique strain, is scheduled to throw on the side Wednesday. ... Right-hander Andrew Cashner, on the disabled list with shoulder soreness, is scheduled to throw a bullpen session Wednesday. He last threw on Sunday in Atlanta and didn't report any discomfort.
Cardinals: Right-hander Joe Kelly (2-1, 3.90) makes his first career start against the Padres.
Padres: Right-hander Jesse Hahn (6-2, 2.12) is 6-1 with a 1.47 ERA since June 14, with 46 strikeouts against 17 walks.
Link to box score: San Diego (47-59) 3, St. Louis (56-49) 1
Join the pre-game, in-game and post-game discussion about each contest at The Cardinal Nation message board.