Updated

(SportsNetwork.com) - Madison Bumgarner was almost perfect his last time out and will lead the San Francisco Giants into Sunday's finale of a three-game series versus the Milwaukee Brewers at AT&T Park.

In a 3-0 win over Colorado on Tuesday, Bumgarner took a perfect game into the eighth inning and faced the minimum through seven innings, but a 1-2 breaking ball to Justin Morneau leading off the eighth was poked down the right field line for a double.

Bumgarner was able to shake off the hit by Morneau and went the distance for the fourth time this season. He struck out a career-high 13 batters and has 49 over his last five starts -- 40 innings.

"That game was more impressive than a lot of no-hitters, that's how well he threw tonight," said Giants manager Bruce Bochy. "You look at the strikeouts, the stuff he had, the command."

Giants catcher Buster Posey, who nearly became the second player in MLB history to catch two perfect games, produced the game's lone runs with his two-run homer in the sixth inning and a solo blast in the eighth. Posey caught Matt Cain's perfect game against Houston on June 13, 2012.

Bumgarner has won two straight starts and is 6-2 in his last eight decisions. The left-hander is 3-2 with a 1.67 ERA in six career starts against Milwaukee and is trying to match a career high with 16 wins set in 2012 (16-11).

Kyle Lohse will counter Bumgarner for the Brewers and has a 12-7 record to go along with a 3.42 earned run average. Lohse ended a four-start winless drought (0-3) his last time out in a 10-1 victory at San Diego, as he tossed six innings of one-run ball and scattered four hits.

Lohse, a right-hander, has made six career starts against San Francisco, going 3-2 with a 3.79 ERA. He is 8-5 in 16 road starts this season.

Milwaukee was almost no-hit in Saturday's 3-1 loss and has dropped four in a row and seven of nine games to watch its lead atop the NL Central shrivel to one game ahead of St. Louis and two in front of Pittsburgh.

Giants starter Jake Peavy carried a no-hitter into the eighth inning and gave up his only hit of the night to Mark Reynolds, who smacked a line drive to right with one out in the eighth. Ryan Braun had an RBI in the top of the ninth and finished with one of Milwaukee's four hits.

"He threw a great game," Reynolds said of Peavy. "He didn't leave much over the plate and mixed his pitches well."

Brewers starting pitcher Mike Fiers was cooled off on the mound and surrendered all three runs in seven innings, posting nine strikeouts and two walks in the process.

The Brewers hope to salvage this set in San Francisco before heading to Wrigley Field for a three-game set with the Chicago Cubs.

San Francisco has been rolling with five straight wins and eight in the last 11 games to pull within 2 1/2 games of Los Angeles for the NL West lead.

Peavy was brilliant in last night's victory and also earned his 2,000th career strikeout. The right-hander, who came over via trade with Boston, fanned eight batters and walked three in 7 2/3 innings.

"It's exciting to be here," Peavy said. "I'm very fortunate to be here."

Santiago Casilla posted his 13th save in the ninth.

Michael Morse had two RBI, Pablo Sandoval and Brandon Crawford finished with two hits apiece and Hunter Pence extended his hitting streak to 12 games with a 1-for-4 performance for the Giants, who had a 10-4 advantage in hits and have the top spot in the NL wild card race.

The last time the Giants won five in a row was from June 4-8. They are 54-15 this season when scoring first and have won seven of the last eight at home.

San Francisco will hit the road next to face Colorado and Detroit.

Milwaukee won two of three meetings with San Francisco earlier this month at Miller Park.