CINCINNATI -- Jay Bruce hadn't driven in a run in more than a month. He finally got a notable RBI and kept Cincinnati's winning streak going.
Mesoraco hit his ninth homer off Tim Lincecum (4-5), who has beaten the Reds during the playoffs but never during the regular season. Bruce, who spent time on the disabled list following surgery for torn knee cartilage, knocked in his first run since April 25.
The Reds' biggest shortcoming has been their inability to drive in runners. With Bruce back, they've got a chance to fix the problem.
"It was nice seeing him do what he does," manager Bryan Price said. "It was really good to see him get a couple of hits."
Homer Bailey (6-3) went six innings in his first game against the Giants since his no-hitter against them last July 2 at Great American Ball Park. The right-hander gave up three runs and five hits, including Hunter Pence's homer, double and single.
"We scored early," Bailey said. "They hit some balls and got some men on base, but I was able to limit the damage and I found a groove."
The Giants have the majors' best record at 37-21, but were undone by a season-high four errors. Lincecum had a throwing error, and catcher Hector Sanchez threw two balls into center field on steal attempts.
Part of it was Billy Hamilton's speed. The Reds leadoff hitter doubled and scored on Lincecum's throwing error in the first inning. He also singled, stole a base and scored a run in the fifth. Lincecum acknowledged that he got a little flustered with him on base.
"It's fun to be fast," Hamilton said. "That's what speed does."
The Reds have dominated the Giants during the regular season in recent years, winning nine of 11 since 2012. San Francisco got the best of Cincinnati when it mattered most, taking three of five in the 2012 division series and going on to win the World Series.
Cincinnati won this one with a pair of big innings. The Reds scored four times in both the first and fifth innings, matching the most runs that the Giants have allowed in an inning this season.
When Bailey threw his second no-hitter against the Giants last July, the opposing pitcher was Lincecum, who threw his own no-hitter 11 days later at San Diego.
Lincecum had a rough time in the rematch, matching his career high by giving up eight runs in only 4 1/3 innings. Bruce doubled home a run in the first inning for his 500th career RBI, and Mesoraco homered for a 4-0 lead.
Brandon Phillips doubled home two more runs in the fifth, and Bruce had an RBI single as the Reds pulled ahead 8-3. Bruce missed two weeks following knee surgery and was only 4 for 30 in his previous eight games back.
Lincecum is 0-4 with a 9.79 ERA in six career starts against the Reds, the only NL team he hasn't beaten during the regular season. He won Game 4 in Cincinnati during the 2012 division series.
It was the third time in his career that Lincecum gave up eight runs in a start. The previous time also was against Cincinnati last July 22.