MIAMI -- Scott Olsen took advantage of a higher pitch count and an extra day's rest.
Cody Ross hit a two-run homer in the first for the Marlins. Ross was batting clean up for only the third time this season and he homered for the second time in those games.
That was all the run support Olsen (8-4) would need.
"It's been a long time since I've felt so good out there," Olsen said.
Olsen overcame a 27-pitch first inning, including a 12-pitch at-bat by leadoff hitter Jose Bautista. He allowed six hits in 6 2/3 innings.
"They did a good job in the first inning of fouling pitches off and that point I was just trying to get outs," Olsen said. "Luckily they swung and missed at a couple of them."
Olsen's strikeout run began with one out in the first, when he got Jason Bay and Craig Wilson. He then had a perfect second, striking out Jose Hernandez, Jose Castillo and Ronny Paulino. Olsen then retired Pirates pitcher Paul Maholm on a called third strike leading off the third.
"I think he found his groove and then he started attacking hitters," Marlins manager Joe Girardi said. "His pitch count was pretty high after the first inning and for him to get into the seventh, he did a great job."
Girardi replaced Olsen after 114 pitches and relievers Matt Herges, Taylor Tankersley and Joe Borowski held the Pirates scoreless. Borowski, who had his 20th save in 22 opportunities, and Tankersley each had two strikeouts.
"It runs your pitch count up a lot but in a tough situation, sometimes you need a strikeout," Olsen said. "For me to know that sometimes I can get them, it helps out."
Florida's 15 strikeouts in a nine-inning game were second all-time behind the 17 against Montreal on July 21, 2002. Josh Beckett started that game and still holds team's rookie game record with 12.
"It looked like he had pretty nasty stuff, kind of what he did to us last time," Pirates shortstop Jack Wilson said of Olsen, who struck out nine in a start at Pittsburgh on May 13. "Every time you strike out nine or 10 guys in a big league field it's pretty impressive."
Ross hit a 3-2 pitch from Maholm over the wall in left-center in the first inning. His sixth home run of the season scored Dan Uggla, who reached on a one-out single.
"I'm comfortable in any spot in the lineup, as long as I'm playing," Ross said. "It was a big hit but the way Scott was pitching, we only needed one run."
Hernandez's RBI groundout in the fourth brought the Pirates within 2-1.
Florida made it 3-1 in the fourth on a fielding error by second baseman Castillo. After Miguel Cabrera and Ross hit singles to start the inning, Maholm got Josh Willingham to hit a grounder to Castillo, who let the ball roll between his legs into right-center, scoring Cabrera from second and advancing Ross to third. Ross scored on Wes Helms' double play grounder.
"Both starting pitchers pitched well," Pittsburgh manager Jim Tracy said. "Olsen threw a lot of strikes early in the count. He was ahead of a lot of hitters. We had just a couple of opportunities against him. But, much of it was of the two out variety."
Maholm (3-9) allowed four runs and five hits and struck out five.
"Olsen pitched a great game," Maholm said. "Unfortunately, we had to take a loss."
Olsen's six consecutive strikeouts were one shy off Jesus Sanchez's team record. Sanchez struck out seven straight against Atlanta on Sept. 13, 1998. ... Bay went 0-for-2 with two walks, ending an 11-game hitting streak.