Mike Jacobs and Hanley Ramirez each had three of Florida's 15 hits and Matt Treanor hit a two-run homer, his first since June 20 last year.
Florida led 5-0 after two innings and 8-2 before Pittsburgh closed with five runs in the seventh.
Adam LaRoche had a two-run homer for the Pirates.
Olsen (6-6) gave up five runs and seven hits in six-plus innings, becoming the first Marlins pitcher to start a game with five strikeouts.
Zach Duke (3-7) allowed six runs and 12 hits in four innings.
Dodgers 9, Diamondbacks 5
At Phoenix, Russell Martin spoiled pitcher Randy Johnson's return with a home run and finished with three hits as Los Angeles took three of four from Arizona.
Randy Wolf (9-6) allowed three runs in six-plus innings and Jeff Kent drove in three runs for the Dodgers.
Johnson (4-3), who went on the disabled list with muscle tightness in his buttocks and a sore back, never looked comfortable in his first start in 18 days. He threw most of his 70 pitches thigh-to-chest high with velocity topping out at 151kph in the first inning and declining thereafter.
The 43-year-old left-hander allowed four runs -- three earned -- and six hits in three innings. He struck out two, walked two and hit a batter with a pitch.
Phillies 8, Reds 7
At Phildelphia, Jimmy Rollins had four hits, including the game winning RBI single in the bottom of the 10th inning as Philadelphia edged Cincinnati.
Chase Utley hit a pair of two-run homers for the Phillies, who pulled within three games of NL East-leading New York.
Alex Gonzalez, Adam Dunn and Edwin Encarnacion each homered for Cincinnati, which finished its road trip at 3-6.
Astros 8, Rockies 5
At Houston, Craig Biggio became the ninth man in baseball history to get 3,000 hits with one club, while Carlos Lee's walk-off grand slam in the 11th inning extended Colorado's season-high losing streak to seven games.
Lee's shot to left field off Brian Fuentes (0-3) came on his first pitch. It was the third time in seven days Fuentes has allowed a game winning hit.
Biggio became the 27th player to reach the 3000-hit milestone with a single to center field in the seventh inning.



