"The way we've been playing, we just needed a win. Period," Lee said. "On the road, it makes it even better."
In the opener of a four-game series between the NL's top two teams, the Cubs prevailed in a back-and-forth contest to improve to 32-26 at Miller Park -- also known by Cubs fans as "Wrigley North" -- since it opened in 2001.
"I wasn't able to execute, bottom line," Torres said.
Lee, who finished 3-for-5 with three RBIs, then flared a double to right, scoring Soriano. After an intentional walk to Aramis Ramirez and a strike out of Geovany Soto, Mark DeRosa's infield single scored Fontenot to make it 6-4.
"I just got two strikes and I was battling, I was just trying to get a sinker up and get the barrel on it," Lee said. "It worked out. He left one up a little bit and I was able to stay inside it and hit it to right field."
Johnson did his part with a hard slide.
He came through in the seventh after walking to load the bases with one out. Brewers starter CC Sabathia forced Lee to ground weakly to Hardy, the shortstop, but Johnson's hard slide took out second baseman Rickie Weeks and Weeks' errant throw allowed two to score to give the Cubs a 4-3 lead.
"You try to beat the middle infielder to a spot, and I was able to get in there and get a good piece of him," Johnson said.
Said Weeks: "I never got a hold of the ball really good, so I just tried to turn it. It just got away from me."
The Brewers tied the game at 4-4 with a solo homer by pinch hitter Russell Branyan with two outs in the seventh off Bob Howry. But they couldn't mount another comeback in the ninth against reliever Carlos Marmol, who picked up his fifth save after working around a two-out walk. Soriano made a jumping catch near the wall on Gabe Kapler's fly ball to deep left to end the game.
The Cubs took an early lead off Sabathia, the reigning AL Cy Young winner and the Brewers' prized acquisition picked up in a trade with Cleveland before the All-Star break. Sabathia had started 4-0 in his first four starts with a 1.36 ERA in the NL, but the Cubs chipped away.
"They were patient and I wasn't as pinpoint as I had been in my earlier starts," Sabathia said. "It's the Dave Burba approach, if you don't got it, fake it. Do whatever I can to keep us in the game."
Soriano doubled, stole a base and then scored on Lee's single in the first. The Cubs made it 2-0 when Soriano, who came off the disabled list on Wednesday, homered in the third, his 17th of the season and second in two days.
"I swung the bat very good today, yesterday too. Hopefully it will continue tomorrow," he said.
Down 2-0, J.J. Hardy and Ryan Braun hit back-to-back homers off Cubs starter Ted Lilly. Milwaukee took the lead moments later when Prince Fielder singled and scored on Corey Hart's double. Lilly had retired 13 of his previous 14 batters before the home runs.
The Brewers are trying to mimic what the Cubs did to them last season.
Chicago overcame an 8½-game deficit last June to win the division by two games over Milwaukee, and this year Chicago's biggest lead has been 8½ games on June 16 only to have the Brewers catch the Cubs in the division Saturday before losing Sunday and again on Monday to fall two games back.
With the four-game series, both teams get to showcase their best pitchers, continuing Tuesday when NL All-Star starter Ben Sheets (10-3, 2.87 ERA) squares off against Cubs ace Carlos Zambrano (11-4, 2.96).
"We won the first game of an important series," Cubs manager Lou Piniella said. "And tomorrow we've got a nice pitching matchup between Sheets and Zambrano, two All-Star pitchers."
Reliever Chad Gaudin (2-1) earned the win with a scoreless eighth. Gaudin came with starter Rich Harden in a trade with Oakland on July 8 as part of a six-player deal. ... Braun's homer was his fifth in six days and team-leading 29th this season. ... It was Milwaukee's eighth straight sellout, setting a Miller Park record, and 24th this season. The Brewers also are expected to sellout the three remaining games in the series. ... Chicago drew six walks against Milwaukee and lead the majors with 419 walks drawn this season.