PITTSBURGH -- No one questions Gerrit Cole's ability.
"He's got great stuff," San Francisco Giants manager Bruce Bochy said.
The mental part is starting to catch up for Cole now that he is 11 months removed from his major league debut and learning to be less emotional.
That was evident Wednesday as Cole pitched eight innings to snap his four-game winless streak and right fielder Travis Snider hit a pivotal two-run single to lead the Pirates past the San Francisco Giants 4-3.
Cole (3-2) allowed three runs and seven hits, matching his career high for innings as the Pirates took two of three in the series after losing eight of their previous 11 games. The right-hander struck out seven and walked one to win for the first since opening the season with back-to-back wins.
Cole has pitched at least six innings in six of his seven starts this season and at least seven innings four times.
"He'll pitch emotionally rather than pitch with emotion as far as getting overaggressive and the velocities (of his pitches) start running together -- the soft stuff isn't as soft, the spin probably isn't as sharp, everything seems to be in a bit of a hurry," Pirates manager Clint Hurdle said. "We just tried to get him to maintain pace and rhythm on the mound, use the fastball on both sides of the plate."
Snider's single off Tim Lincecum (2-2) in the second inning put the Pirates ahead 4-1 and proved to be the difference in the game. Hurdle batted Snider in the leadoff spot -- just the second time he has hit first in his three seasons with Pittsburgh -- in order to get a left-handed hitter at the top of the order against a right-hander.
"Whether that's the leadoff spot or the nine-hole or coming off the bench, it's something we take pride in as a team, knowing you're going to get your opportunities and when those opportunities arise we're not going to waste them," Snider said.
Lincecum's woes at PNC Park continued as gave up four runs and seven hits in four innings. He has never won in five career starts in Pittsburgh, including being tagged for 14 runs and 18 hits in 12 innings in his last three outings.
The National League West-leading Giants, who lost consecutive games for the first time since April 21-22, had won five of Lincecum's first six starts this season.
"I wasn't finishing my pitches, especially my secondary pitches," Lincecum said. "When I got ahead in the count, the secondary pitchers were just rolling up there and had no bite on them. I'm the type of guy who's going to have to get guys to chase pitches but I can't do that when I'm leaving balls up in the strike zone that are hittable."
First baseman Ike Davis had three of the Pirates' 12 hits. Snider, center fielder Andrew McCutchen and catcher Chris Stewart had two each.
Right-hander Mark Melancon pitched a perfect ninth for his second save.
First baseman Brandon Belt drove in all three Giants' run with a solo home run, his ninth of the season, in the first inning that opened the scoring and a two-run double with two outs in the fifth that drew San Francisco within 4-3.
However, Belt made the final out of the inning when thrown out while trying to advance on the throw home.
"It would have been nice to have (left fielder Michael) Morse up next but there was the out at third and that was a mistake," Bochy said.
NOTES: Giants 3B Pedro Sandoval was not in the starting lineup because of a sprained left hand but had a pinch-hit single and scored in the fifth inning. ... San Francisco C Buster Posey and CF Angel Pagan also did not start as the Giants had a cross country flight to Los Angeles after the game then the opener of a four-game series with the Dodgers on Thursday night. Pagan flied out as a pinch hitter in the seventh. ... Pittsburgh RHP Jason Grilli threw off a mound Wednesday for the first time since being placed on the disabled list April 21 with a strained left oblique but there is no timetable for his return. ... RHP Ryan Vogelsong (1-1, 4.60) will start for the Giants on Thursday night against RHP Josh Beckett (0-1, 3.14). ... The Pirates are off Thursday then open a three-game home series Friday night against St. Louis.