MIAMI -- When Ricky Nolasco is on, he is tough to beat.
"We faced a very, very good pitcher who was terrific the first seven innings of the game," Rockies manager Jim Tracy said.
Seth Smith hit a two-run home run in the eighth. Dan Uggla and Jorge Cantu each hit RBI doubles for the Marlins, who have won four of five.
Nolasco (10-7) allowed two runs and four hits while striking out eight as he reached 10 wins for the third straight season.
He retired the side in the fifth, throwing 11 pitches to retire Ian Stewart, Clint Barmes, and Hammel.
Leo Nunez struck out Brad Eldred to end the game with two runners on base for his 22nd save in 27 opportunities.
"When Ricky came out of that fifth inning, it was a good feeling because we knew he had his stuff," Marlins manager Edwin Rodriguez said.
Nolasco, who has been inconsistent this season, is 5-0 in five career starts against the Rockies.
Dan Uggla and Jorge Cantu doubled in the first for a 2-0 lead and Seth Smith hit a two-run homer in the eighth.
Cody Ross robbed Jason Giambi of extra bases in the sixth as he slammed up against the center-field wall to make the grab with two runners on.
"At first I thought it was out, then I said well at least it's going to be a double and two runs scored, then Cody Ross came up with the ball, that was outstanding," Rodriguez said. "Clutch defense."
Jason Hammel (7-5) fell to 0-3 against the Marlins in his career as he allowed five runs in seven innings.
Nolasco got his 50th career win, moving him past A.J. Burnett for second place on the Marlins behind Dontrelle Willis (68). ... Sanchez leads National League rookies with 100 hits. ... Rockies CF Carlos Gonzalez left the game in the sixth with a bruised left index finger. ... Marlins C Brad Davis went 0 for 3 with a walk in his major league debut. ... Rockies 1B Todd Helton will play two games at Single-A Asheville on a rehab assignment and could be activated for Saturday's game against Philadelphia. ... Rockies first-round draft pick Kyle Parker announced Wednesday he will remain at Clemson as the team's starting quarterback, but negotiations will continue until the Aug. 16 deadline.