Alan Knicely hit his first home run since June 10, 1985, to break a 1-1 tie in the ninth inning and back Danny Cox's three-hitter, as the St. Louis Cardinals won their seventh straight game with a 3-1 victory over the Phillies last night in Philadelphia.

Cox (5-8) struck out eight, tying a career high. He has not walked a batter in 25 innings.

Bruce Ruffin (3-2), who had allowed two hits through eight innings, gave up Knicely's homer to center with one out. Tito Landrum singled and scored on Terry Pendleton's two-out double.

St. Louis took a 1-0 lead in the first on Tommy Herr's RBI double. The Phillies tied it on single by Mike Schmidt, who has 76 RBI.

Astros 4, Braves 2: Glenn Davis' 22nd home run, a three-run shot with two out in the eighth, gave Houston the win at home.

Davis, second in the league in homers, had broken an 0-for-19 slump with a run-scoring single in the first. He is fourth with 71 RBI.

Davis homered off Atlanta starter Doyle Alexander (1-3), who had retired 15 batters in a row before Bill Doran doubled with one out.

Bob Knepper (13-7) got his third victory in eight days. Dave Smith pitched the ninth for his 18th save.

Mets 9, Cubs 2: Howard Johnson hit a three-run double and Kevin Mitchell and Darryl Strawberry homered in New York.

Bob Ojeda (12-2) won his sixth straight and tied his career high for victories in a season. The left-hander, who last lost May 31, has a league-leading 2.28 ERA.

Roger McDowell relieved with runners on first and second and a 5-2 lead in the eighth. Keith Moreland struck out and Jody Davis grounded into a double play.

The Mets took a 4-0 lead in the first off Scott Sanderson (5-7) and now are 46-13 when they score first. Johnson's double followed a bases-loaded walk to Mitchell.

The Mets lead Montreal by 16 1/2 games in the East, the largest margin in the NL since the 1975 Reds won the West by 20 games.

Dodgers 2, Giants 1: Orel Hershiser pitched a three-hitter and drove in a run with a fourth-inning single as Los Angeles won at home.

Hershiser (10-8) recorded a season-high 10 strikeouts in his first complete game since June 24. San Francisco dropped 3 1/2 games behind Houston in the West.

The Dodgers scored in the third when Franklin Stubbs broke an 0-for-15 slump with an RBI single off Mike LaCoss (9-6). In the fourth, Hershiser's bloop single to right drove in Reggie Williams.

Padres 5, Reds 2: In San Diego, Tony Gwynn, Kevin McReynolds and Jerry Royster homered as the Padres ended a three-game losing streak.

Andy Hawkins (7-7) allowed six singles over 8 1/3 innings, and Rich Gossage got his 17th save. The loss ended the Reds' three-game winning streak. Tom Browning (9-8), who yielded the three homers, had his four-game winning streak stopped.

San Diego scored in the first on McReynolds' two-out double and Steve Garvey's single. In the third, Gwynn hit his 11th homer and McReynolds his 14th for a 3-0 lead.

Pirates 7, Expos 4: R.J. Reynolds drove in three runs, one in a four-run seventh inning, to lead visiting Pittsburgh.

The Pirates trailed, 4-3, entering the seventh, which started with singles by Joe Orsulak and Barry Bonds that knocked out Bryn Smith (7-6). Bob McClure relieved, and Johnny Ray, Sid Bream, and Reynolds hit RBI singles.

The Expos, who have lost four in a row and eight of nine, took the lead in the sixth against Rick Reuschel (6-12) on Mitch Webster's two-run single. Barry Jones earned his first career save.