Kenny Rogers just seems to have a knack for winning at home.

Rogers pitched a four-hitter to win his 18th straight home decision, leading the New York Mets over the San Francisco Giants, 3-0, yesterday at Shea Stadium.

"I've never had an issue with where I was pitching," Rogers said. "As long as you locate your pitches and move them around, you're going to be successful, no matter where you pitch."

Rogers (4-0) struck out a season-high nine -- one short of his career high -- and walked one in his sixth career shutout.

New York remained 2 1/2 games behind first-place Atlanta in the NL East and four games ahead of Cincinnati in the wild-card race.

Mike Piazza hit a sacrifice fly in the sixth, and Rickey Henderson had a two-run single in the seventh as the Mets won for the 10th time in 13 games.

Giants starter Livan Hernandez, 0-5 against the Mets this season, left before the third inning with tightness in his rib cage. He was replaced by Mark Gardner (4-10), who pitched four innings, allowing one run, one hit and three walks.

REDS 6, CUBS 3: Sammy Sosa hit his major league-leading 58th home run but Cincinnati got a three-run homer from Dmitri Young in the fifth, and beat Chicago at Wrigley Field.

Sosa pulled four homers ahead of St. Louis's Mark McGwire with a long solo shot in the third off Juan Guzman (5-2). Sosa, six games ahead of the pace of his 66-homer season of a year ago, also walked and struck out twice. He needs 12 homers in his final 26 games to tie McGwire's record. Two more homers will make Sosa the first major leaguer to hit 60 twice.

The Reds remained 2 1/2 games behind Houston in the NL Central.

Guzman, making his first career appearance against the Cubs, won for the fifth time in six starts, allowing three runs -- two earned -- and six hits in seven innings. Danny Graves pitched the ninth for his 19th save.

ASTROS 6, PHILLIES 5: Jose Lima became the National League's first 19-game winner as pinch hitter Russ Johnson hit a three-run homer in the sixth to give Houston a comeback victory at Veterans Stadium.

Johnson, pinch-hitting for Lima (19-7) with two on and three runs already in, hit a 1-1 pitch from Randy Wolf (5-7) that barely cleared the wall in left for a 6-4 lead.

Lima allowed three earned runs and eight hits in five innings. Billy Wagner pitched a perfect ninth for this 34th save.

The Phillies, battered by a major league-record 14 homers in the previous two games against the Reds, have lost 10 of 11.

BRAVES 4, CARDINALS 1: Greg Maddux won his eighth consecutive decision and Chipper Jones hit his third home run in two games as Atlanta won at home.

Maddux (18-6) allowed three hits, one run, no walks and struck out seven in his third complete game of the season. He got 16 outs on grounders and there was only one outfield putout.

After allowing a one-out single to Alberto Castillo in the third inning, the four-time Cy Young winner retired the last 23 batters.

The Atlanta right-hander also handled Mark McGwire, who went 0 for 4.

MARLINS 8, DODGERS 6: In Miami, Mark Kotsay hit the first grand slam of his career in the first inning as Florida overcame a pair of homers by Raul Mondesi.

After rain delayed the start for 2 hours 26 minutes, Luis Castillo led off with a double off Ismael Valdes (9-13) and scored on Alex Gonzalez's double.

Bruce Aven's walk and Kevin Millar's single loaded the bases for Kotsay, who hit his eighth homer of the season for a 5-0 lead. Kotsay started in right in place of Danny Bautista, who broke his nose Saturday.

ROCKIES 5, EXPOS 3: Dante Bichette hit his 29th homer and Pedro Astacio hit a two-run triple to lead Colorado over host Montreal, which has lost four straight.

Astacio (15-10) allowed three runs -- two earned -- and eight hits in eight-plus innings. He struck out eight, including Wilton Guerrero leading off the eighth, for his 1,000th career strikeout.

PADRES 4, PIRATES 3: Tony Gwynn hit his second go-ahead, three-run homer in four days, and Andy Ashby limited Pittsburgh to five hits in seven-plus innings to lead visiting San Diego.