Jorge Cantu homered and doubled for the Marlins, who won their second in three games. Jeremy Hermida, Mike Jacobs and John Baker, who had three hits and reached base in all five plate appearances, also drove in runs.
Nolasco never finished a game before throwing the Marlins' first complete game since Anibal Sanchez did it on Sept. 16, 2006, a major league-record 301 games ago.
The Marlins opened their nine-day, three-city road trip with a victory after a 2-5 homestand and will try for consecutive wins on the road for the first time since July 25-26 in Chicago.
Randy Winn beat out an infield grounder with two outs in the first for the Giants, who committed a season-high four errors, two by first baseman Travis Ishikawa in the first two innings. Pablo Sandoval had a pinch-hit double for the Giants in the ninth.
Nolasco (12-7) retired 21 straight following Winn's single. He walked one and struck out 11.
Kevin Correia (2-7) lasted 4 2-3 innings, giving up five runs -- three earned -- on seven hits. He walked three and did not strike out anyone.
The Marlins have won a series in San Francisco once since 1995, and are 9-17 in the new ballpark, which opened in 2000.
Nolasco, who made his first career appearance against the Giants, was 1-2 in his previous seven starts.
Florida scored an unearned run in each of the first two innings. Nolasco hit his double as part of a three-run rally in the fifth.
Cantu led off the sixth with his 22nd home run of the year.
Marlins catcher Matt Treanor promised to stay in the dugout for Wednesday night's game instead of retreating to the clubhouse to watch his wife, Misty May-Treanor, play for a gold medal in women's beach volleyball, which is scheduled at the same time as the Marlins-Giants game.