Greene capped his third three-hit game of the month with a go-ahead two-run homer in the bottom of the eighth, trumping Jesus Guzman's two-run double in the top half, as the Cardinals beat the San Diego Padres 4-3 to snap a four-game losing streak Monday night.
The former 2005 first-round pick with a career average of .220 in parts of four seasons has started 10 of the last 15 games at second base.
"You're just going to see a game that just absolutely blows your drawers off," manager Mike Matheny said. "That's what excites you about what he can do on a consistent basis."
Jaime Garcia allowed two runs and struck out seven in seven-plus innings for the injury-riddled Cardinals, who held their half-game lead over Cincinnati in the NL Central. St. Louis has won just three of its last 11 and Matheny said there was "extreme urgency" before the start of a five-game homestand.
"We just need to get something positive going," Matheny said. "They've been fighting, they deserve some wins."
Clayton Richard got the first out in the eighth before the Padres went to the bullpen. Yadier Molina hit a broken-bat single with one out off Andrew Cashner (2-3) and with two outs, Greene homered to right-center.
"I thought it was a good pitch, down and away," Cashner said. "You've just got to tip your cap to him. That's the pitch I wanted to make."
Padres manager Bud Black referred to the combination as "the old bloop and a blast."
Greene gives the Cardinals pop from a middle infield spot, with four homers and 10 RBIs in 79 at-bats. He lowered his elbow for a more even stroke earlier this month and had a career-best two homers in a three-hit game at Houston on May 6, and three hits and a walk May 15 against the Cubs.
"I've felt great since that day in Houston, and I think it's starting to show," Greene said. "The adjustments we made are really paying off."
Jason Motte (3-1) allowed Guzman's two-run double in the eighth for his second blown save in three chances, but had two fielding assists while finishing off the win with a perfect ninth.
Yonder Alonso had two hits for the Padres, who are a major league-worst 4-11 on the road after dropping the first game of a 10-game trip.
Guzman's go-ahead hit came against the fourth pitcher St. Louis used in the eighth. Marc Rzepczynski, who gave up Scott Van Slyke's go-ahead three-run homer in Sunday's loss at Los Angeles, walked Alonso, the only batter he faced, on four pitches.
Garcia's third career balk, and first this season, was costly in the second. Alonso went to second after hitting a leadoff single, then advanced on a groundout before scoring on Nick Hundley's sacrifice fly.
Matheny let Garcia hit in the seventh with one out, a man on second and the Cardinals down by a run. Garcia came through with an infield hit, beating out a grounder deep in the hole that shortstop Andy Parrino gloved but followed with a late, offline throw.
Garcia intentionally walked Parrino, the No. 8 hitter, to load the bases in the seventh before striking out Richard to end the threat. Richard struck out all three at-bats and is 1 for 20 on the season with a single and 13 strikeouts.
Earlier in the seventh, Alexi Amarista just missed on a squeeze bunt attempt barely foul down the third-base line before striking out.
Garcia lasted just one more batter, departing after Chris Denorfia doubled to start the eighth. He struck out seven, giving him 16 in 14 1/3 innings his last two outings.
Richard's outing was his longest of the season, and his fifth of seven or more innings in nine starts this season.
Cardinals 3B David Freese, in a 3-for-34 slump with all three hits in the same game, got a day off to work on his stroke. ... Richard is a career .122 hitter (14 for 117) with four doubles, nine RBIs and 46 strikeouts. ... The Padres were an inning shy of their first three-game winning streak.