CHICAGO -- Starlin Castro had a rough Thursday. His Friday was considerably better.
One day after misplaying a routine grounder that led to four unearned runs, Castro hit a home run and drove in the winning run with a double in the ninth inning to give the Chicago Cubs a 4-3 victory over the San Francisco Giants.
The Cubs trailed 3-2 heading into the bottom of the ninth after Kyuji Fujikawa blew the save but pinch-hitter Dioner Navarro, batting for Alberto Gonzalez, led off and connected for a wind-blown homer off Giants closer Sergio Romo (0-1) to tie it.
The young Cubs' shortstop, who was spotless in the field Friday, appreciated that he quickly got a chance to redeem himself.
"That's the part I love the most about this game," Castro said. "Every day is a new day. Play hard, you can be a hero."
The Cubs right-hander pitched 7 1/3 shutout innings and allowed three hits while striking out three. DeJesus and Castro both hit their first home runs to stake Villanueva to a lead against Giants ace Matt Cain on a day the wind was blowing out to right field.
"With Cain you want to be aggressive. He throws strikes," DeJesus said. "You get a fastball, you want to take advantage of it. ... I wasn't 100 percent. I was kind of like, 'Man, I popped it up.' But when you look at the flags, the wind really took it."
The strong start was Villanueva's second in a row for the Cubs. When Villanueva made his Chicago debut April 6 at Atlanta he gave up one run in 6 2/3 innings but took a no-decision when relievers Fujikawa and Carlos Marmol let the Braves rally.
Once again, Villanueva didn't get the win after Fujikawa blew his first save in three tries.
"Obviously a home run and a walk-off hit and a nice job at shortstop," Cubs manager Dale Sveum said. "It was a well-played game except for the three runs in the ninth after beating them for 8 1/3 innings."
Chicago led 2-0 heading into the ninth but Fujikawa (1-0) allowed a one-out RBI single by Pablo Sandoval and hit Buster Posey with a pitch before Brandon Belt doubled down the right-field line to give San Francisco the lead and wipe out Villanueva's chance for a win.
Not that he minded.
"After they came back in the ninth, all we needed is the win," Villanueva said. "Personal stats, whatever."
Cain, meanwhile, was also good.
Making his first start since giving up nine earned runs in 3 2/3 innings in a 14-3 loss to St. Louis on April 7, Cain generally controlled the Cubs. Other than allowing solo home runs to DeJesus and Castro, the Giants ace was solid, pitching seven innings and surrendering two runs and seven hits while fanning six and walking two.
"Matty threw well," Giants manager Bruce Bochy said. "Seven innings, a solid effort."
That's what the Giants usually get from Romo, who had converted all six of his save chances and hadn't allowed an earned run before Friday.
Though the wind was blowing hard out to right when Navarro homered, the San Francisco closer wasn't using the elements as an excuse.
"I made a good pitch. He put the ball in play," Romo said. "Things happen when you put the ball in play. You tip the cap to him. No excuses."
Wind-aided or not, the Cubs were able to get to Romo. Then after DeJesus singled, Castro finished the Chicago rally.
"Like I always say, those last three outs, no matter who's out there and how good they are, it's unbelievable how those things happen," Sveum said.
Los Angeles Dodgers manager Don Mattingly said Thursday that San Diego Padres outfielder Carlos Quentin shouldn't play again until the injured Zack Greinke can pitch. When asked about Mattingly's comments before Friday's game, Bochy said "that's a great point." Quentin was later suspended eight games by Major League Baseball. ... Saturday's pitching matchup pits the Giants' Madison Bumgarner against Chicago's Jeff Samardzija. ... Cubs second baseman Darwin Barney was presented his 2012 Gold Glove prior to Friday's game. He is on the 15-day disabled list with a left knee laceration but is expected to return to the lineup Tuesday against Texas. ... Giants second baseman Marco Scutaro was back in the lineup after getting a day off Thursday. He was 1-for-4. ... Usually a catcher, the Cubs' Steve Clevenger made his first career start as a third baseman. Before Friday, Clevenger had played two games at third.
Information from The Associated Press was used in this report.