Mark McGwire's 59th homer was the perfect way to end a perfect game.

McGwire broke up Jon Lieber's bid with two outs in the seventh inning, moving McGwire within two home runs of Sammy Sosa for the major league lead and sparking the St. Louis Cardinals to a 7-2 victory tonight over the Chicago Cubs.

Sosa flied out to the wall in the first, walked, singled and struck out to stay at 61 homers. McGwire finished 1 for 4 in the opener of a three-game series at Wrigley Field.

Lieber struck out nine of the first 17 batters, including McGwire in his first two at-bats, and had retired 20 straight on a chilly 61-degree night.

"He was flat-out nasty," McGwire said of Lieber. "He had it going and then we just got some hits. He was throwing some of the best sliders I've seen all year."

The game was scoreless when McGwire cranked an 0-1 pitch over the center field fence into a 16 mph wind. After that, Lieber--winless in 13 starts since July 10--fell apart.

In an ensuing span of six pitches, Lieber gave up two singles and two-run homers to Thomas Howard and J.D. Drew. After a single by Marcus Jensen, Lieber (8-11) was lifted and St. Louis scored two more on an RBI single by Eduardo Perez and a run-scoring double by Edgar Renteria for a 7-0 lead.

McGwire, who hit 70 homers last season to beat Sosa by four, broke his own record of 128 for most homers in two seasons. He now has 129, combining this season and last.

He has homered four times in his last four games.

Mark Thompson (1-2) allowed just four hits in six scoreless innings to get his first victory since April 4, 1998, when he was with Colorado.

Shane Andrews hit a two-run homer in the Cubs ninth off Ricky Bottalico.

The closest the Cardinals came to a hit before McGwire's shot was with two outs in the sixth when Thompson hit a liner that Cubs first baseman Mark Grace jumped high to catch.

Grace had dropped Renteria's foul pop for an error leading off the game, but Lieber came back and retired him on a grounder. Then the right-hander took off, working quickly and getting help from home plate umpire Ian Lamplugh's liberal strike zone.

With flashbulbs popping all over, McGwire struck out on three pitches in the first. Sosa sent the crowd to its feet in the bottom half, backing Howard to the wall in right center.

McGwire fanned again in the third, while Sosa drew a walk in the fourth and singled to right in the sixth.

McGwire ran out of the Cardinals' dugout during batting practice and jogged out to right field to chat with Sosa. He had planned to congratulate Sosa on becoming the first player to reach 60 homers twice.

"I personally thought when he hit 60, it should have been the top story on every sports television network, which it wasn't," said McGwire. "He deserved it."