PITTSBURGH, SEPT. 23 -- Bobby Bonilla homered and drove in two runs today as the National League East-leading Pittsburgh Pirates reduced their magic number to eight, beating the St. Louis Cardinals and Bob Tewksbury, 7-2.

Tewksbury (10-8), who had an 0.33 ERA in seven career appearances against the Pirates, gave up six runs and six hits in five-plus innings as Pittsburgh won for the fourth time in five games. He hadn't allowed an earned run in 18 1/3 innings against the Pirates this season, including a 6-0 victory in Pittsburgh on Aug. 12.

The Pirates maintained their 2 1/2-game lead in the NL East as the second-place New York Mets beat Chicago, 7-3.

John Smiley (9-10) rebounded from the worst start of his five-year career to limit St. Louis to two runs and five hits over 5 1/3 innings and end a three-game winless streak.

The Pirates, who had scored only one earned run off Tewksbury in 27 1/3 career innings, scored three runs in the first. Wally Backman doubled, Tewksbury hit Jay Bell with a pitch and Andy Van Slyke doubled in a run. Bonilla hit a sacrifice fly and Barry Bonds singled home Van Slyke for his 113th RBI.

Bonilla, given a second chance in the third when third baseman Todd Zeile dropped his foul pop, hit a 3-2 pitch over the right field wall for his 32nd home run. Bonilla's 114 RBI are the most by a Pirate since Dave Parker's 117 in 1978.

"That inning was vintage Pirates run production," Van Slyke said. "It's no surprise to us when we score three runs in two minutes. We're doing it a lot this season."

Bonds's big numbers -- .308, 33 homers, 113 RBI -- have caused some to overlook Bonilla's big year. That's fine with Bonilla, who says he's content to let Bonds reap attention and collect awards as long as the Pirates keep winning.

"This is Barry's year, let him enjoy it," Bonilla said. "I'll sit in the background and just smile."

Bonilla, who said Bonds deserves to win the MVP award, doesn't get the coast-to-coast attention of Jose Canseco or Darryl Strawberry, but he's hit .279 with 80 homers and 300 RBI over three seasons.

Manager Jim Leyland, who criticized his team for not being ready to play in Saturday's 3-2 loss, said the attitude had changed overnight. "Everybody was focused in on what we had to do," he said. "Tewksbury has pitched good against us and the guys responded well. They were prepared. They went up there in the first and were just stroking the ball, nobody was trying to do too much."

Smiley, 0-2 with a 6.51 ERA against St. Louis in two previous starts, checked the Cardinals on two hits until the sixth when Pedro Guerrero hit a sacrifice fly and Zeile followed with an RBI double.

Vicente Palacios struck out Tom Pagnozzi with the potential tying run on first in the sixth and pitched 3 1/3 scoreless innings for his second save. He has pitched 10 scoreless innings this month.

Pittsburgh scored twice in the sixth on Sid Bream's RBI single and Don Slaught's sacrifice fly, and got another run in the eighth on Slaught's RBI double.