SAN FRANCISCO -- When Carlos Zambrano blew the last part of a three-run lead, the Chicago right-hander was mad at teammate Matt Murton and even more frustrated with himself.
Instead of blowing up in the fifth inning, he made noise with his pitches and his bat to send the Cubs to another road win.
Nomar Garciaparra hit a tiebreaking two-run double in the seventh inning, and Zambrano struck out his last five batters in the Cubs' sixth victory in seven games, 5-3 over the San Francisco Giants on Thursday night.
Michael Barrett hit a first-inning homer and Garciaparra drove in three runs as the Cubs rallied against Noah Lowry (12-12), who had won his last six starts.
Zambrano (13-5) allowed three runs and six hits over seven innings, impressively striking out the side in the seventh to improve to 5-0 in his last six starts. He also got two hits and scored the go-ahead run earlier in the seventh.
But Zambrano seemed ready to self-destruct in the fifth after Murton, a rookie outfielder, made a halfhearted throw that allowed Lowry to score from third on a short fly ball. Moments later, the Giants tied it at 3 on Ray Durham's RBI single.
"I think I was out of the game mentally," Zambrano said. "I was fighting with the umpires, and I was mad at (Murton). ... I apologized to him. I have five years in the big leagues. I don't have to do that."
Manager Dusty Baker praised Zambrano's growing maturity, which mirrors the development of his club late in this lost season. Though the Cubs are two games below .500 with nothing but the faintest playoff hopes, Baker hopes these wins will build confidence for the future.
"He struggled early on and made a couple of young mistakes," Baker said. "The last two innings, the sixth and seventh, were when he threw the best."
Randy Winn hit a leadoff homer for the Giants, who dropped seven games behind NL West-leading San Diego with their third straight loss following a six-game winning streak. Lowry had allowed just six total runs in his six straight wins, but the left-hander yielded five to the Cubs.
Zambrano led off the seventh with a single against Lowry. After Ronny Cedeno also singled, Garciaparra hit Lowry's 112th pitch off the base of the center-field wall, easily scoring both runners.
"I didn't establish my fastball inside, and that's my bread-and-butter pitch," Lowry said. "I made a mistake to Nomar, left a pitch over the plate. Everything else was fine, but I couldn't get that pitch where I wanted to. I wasn't able to make adjustments. I let the guys down."
Roberto Novoa pitched the eighth, and Ryan Dempster picked up his fourth save in five days -- his 25th in 27 opportunities overall -- in the ninth.
Before the game, Barry Bonds faced 21 pitches in a simulated game, took several additional turns at batting practice, ran the bases and played catch in the outfield. If the 41-year-old slugger feels strong after a similar workout Friday, he could be activated from the disabled list this weekend.
Bonds hasn't played this season after three operations on his right knee, but his return could give a boost to San Francisco's playoff chase. The Giants opened an 11-game homestand with their third loss in four games against Chicago this season.
Lowry, the NL pitcher of the month for August, wasn't sharp in his first and last innings, allowing just four singles in the five middle frames of his 6 2/3 innings. The Cubs' five earned runs were the most allowed by Lowry since May 17.
Chicago scored three quick runs against Lowry with a two-out rally in the first inning. Derrek Lee tripled and scored on Garciaparra's single, and Barrett followed with his 15th homer of the season to left.
"These guys never give up," said Garciaparra, who's batting .327 with four doubles and four homers while playing third base in place of injured Aramis Ramirez. "Guys are going out there, and they care. We're just playing pretty well right now."
Winn led off the first for San Francisco with his seventh homer, his fourth in seven games. The Giants got two more runners on before Chicago squelched the rally with two good defensive plays.
"I don't know how that ball went out," Winn said. "Usually the wind knocks it down to right field. It's probably luck. I usually hit one of those streaks every year, even though I don't hit a lot of homers."
The Cubs saved Zambrano again in the third when Jerry Hairston sprinted back to make a diving catch on Durham's two-out drive to center with two runners on. Hairston made another incredible diving catch in the fourth, robbing Todd Linden.
Zambrano's 125 pitches were his second-highest total of the season. He has four multihit games. ... Chicago's Corey Patterson was picked off first base as a pinch-runner in the eighth. ... Winn hit the Giants' third leadoff homer this season, following blasts by Jason Ellison and Michael Tucker. It was the sixth leadoff homer of Winn's career, but the first this season.