CINCINNATI -- Joey Votto struck out in the seventh inning on Tuesday night and his frustration was apparent when he got back to the dugout.
"He was upset he didn't have a better at-bat," said manager Bryan Price. "I felt like he was going to bring his focus to the next at-bat."
Votto's next at-bat came with one out in the bottom of the ninth with the score tied. He worked the count to 2-0 against left-hander Kevin Siegrist, then launched a solo homer an estimated 412 feet to center, lifting the Cincinnati Reds to a wild 7-6 victory over the St. Louis Cardinals at Great American Ball Park.
It was the 11th home run this season for Votto and his fifth career walk-off homer, a welcome diversion during what's been a trying season for him.
"I'm hitting (.225) and it's June, I'm frustrated," Votto said. "It's a combination of things. I'm not worried about me. I'll be fine. We've been losing a lot. Today we didn't lose. We won. Good feeling."
Adam Duvall hit a three-run home run and Billy Hamilton added a rare solo shot for Cincinnati (22-36), which won for the seventh time in 10 games since snapping an 11-game losing streak.
"We're in a good spot right now," Price said.
Cardinals third baseman Jhonny Peralta returned from the disabled list and went 2-for-4 with a pair of doubles and two RBIs, helping St. Louis rally back from a five-run deficit to tie the score in the ninth.
Reds starter John Lamb allowed three runs (one earned) and four hits over a career-high 7 1/3 innings. He kept the Cardinals off balance throughout, changing speeds effectively with a curveball dipping as low as 65 mph.
"I'm just happy to come out here and have success and for us to get a win," Lamb said. "Throwing my stuff for strikes, everything felt consistent in my delivery. I was able to move the ball, in or down, out. It was a good day to be out there."
Former Reds right-hander Mike Leake allowed six runs on 10 hits in 6 1/3 innings, but the Cardinals (30-28) rallied from a five-run deficit to take him off the hook.
"It felt a little different facing friends and people you used to play with," Leake said. "They got a three-run homer and put a pretty good swing on some other pitches. So, a good day for them."
Cincinnati left-hander Tony Cingrani recorded the final out of the eighth, then was brought out for the ninth to protect a 6-4 lead.
However, three consecutive hits to begin the inning, including a two-run double by Matt Carpenter, tied the score 6-6.
Carpenter was thrown out trying for a triple, preventing a bigger inning. A two-minute, 27-second review determined that Carpenter beat the throw but didn't maintain contact with the bag while the tag was applied.
"Those calls can go for you or against you," Price said. "It helped us tonight."
Carpenter believed he was safe, and manager Mike Matheny also believed the go-ahead run should've been standing on third with one out.
"I can't imagine they had a better angle than what the umpire had," Matheny said. "I didn't see anything that was clear and convincing for them to overturn it."
Cingrani (1-2) blew the save but earned his first win of the season. Siegrist (4-1) got one out before taking the loss.
Leake, who spent six seasons with Cincinnati, was facing the Reds for the first time in his career. The Reds (22-36) traded him to the San Francisco Giants last season. Leake signed a five-year free-agent contract with St. Louis in December.
Peralta struck out in his first at-bat back. In the fourth inning, his one-out double put runners on second and third, and Matt Adams followed with an RBI single put the Cardinals ahead 1-0.
Lamb was coming off finest outing in a Reds uniform allowing a run in a career-high seven innings on Wednesday at Colorado. He was sharp Tuesday night, striking out five through five innings with four hits and a run allowed.
Lamb was handed a three-run lead in the fourth.
Duvall, whose first career hit was a home run off Leake in 2014, launched a three-run blast an estimated 425 feet to left field to give Cincinnati a 3-1 advantage.
NOTES: The Cardinals optioned 2B Kolten Wong to Triple-A Memphis on Monday to make room for 3B Jhonny Peralta, who was reinstated from the 15-day disabled list on Tuesday. Peralta began the season on the DL with a thumb injury. ... The Reds optioned RHP Jon Moscot to Triple-A Louisville and recalled OF Steve Selsky. ... Cardinals C Brayan Pena and RHP Seth Maness will begin minor league rehab assignments this week for Double-A Springfield. Pena was expected to start on Tuesday night. Maness will pitch Wednesday. ... Reds RHP Anthony DeSclafani, who began the year on the DL with an oblique injury, will start for Cincinnati on Friday night.