PHOENIX (AP) -- St. Louis' John Lackey pitched seven strong innings to guide the Cardinals to a 3-1 win at Arizona on Wednesday, giving the team its best win-loss record in a decade and maintaining the handy lead atop the National League Central division.
The Cardinals remained 4-1/2 games clear of Pittsburgh, while the third-placed Chicago Cubs lost ground after their winning streak ended at San Francisco.
Houston won at the New York Yankees to notch their 71st victory of the season, already surpassing their total in 2014, while Kansas City was beaten at home by a big-hitting Baltimore.
St. Louis' Lackey (11-8) bounced back from a shaky start, giving up a homer in the first inning but little else.
The Cardinals moved 36 games over an even win-loss record (81-45); their best mark since finishing the 2005 season plus-38. The Cardinals have also won 12 of their past 13 against Arizona.
San Francisco's Brandon Belt hit a leadoff triple in the sixth inning and Buster Posey followed with a go-ahead double to lead the Giants to a 4-2 win against the Chicago Cubs.
It was their first win in six meetings this month against the Cubs.
Giants starter Jake Peavy (4-6) allowed two runs in 6-1/3 innings to frustrate a Cubs lineup that had won its previous six games.
Houston's Evan Gattis hit two home runs to lift the Astros to a 6-2 win at the New York Yankees.
The AL West leaders' 71 wins represents their best season in five years, and there are still 34 games to be played in the regular season.
Houston starter Collin McHugh (14-7) kept up a recent run of ace pitching, both for himself and the team with the top ERA in the league. Houston has won seven of nine, not permitting more than two runs in any game.
The defeat dropped the Yankees two games behind Toronto, which leads the AL East division.
Baltimore hit five home runs in an 8-5 win at Kansas City.
Chris Davis, Manny Machado and Jonathan Schoop each hit a two-run homer off Johnny Cueto (9-9), who labored through five innings. It was second straight shoddy start after conceding 13 hits in a loss at Boston.
The Orioles ended a six-game losing skid and sit two games off the second wild-card berth.
Toronto's Edwin Encarnacion hit a grand slam to extend his hitting streak to 21 games and power the Blue Jays to a 12-4 win at Texas.
Encarnacion sent his 26th homer of the season in a six-run sixth inning which prompted the Rangers to remove starting pitcher Colby Lewis (14-6). Lewis issued four of a season-worst 11 walks by Rangers pitchers.
Blue Jays starter David Price (13-4) celebrated his 30th birthday with a strong six innings after having given up a two-run homer in the first, and guided Toronto to a fifth straight win.
Pittsburgh's Andrew McCutchen homered and drove in four runs to help the Pirates to a 7-2 victory over Miami.
McCutchen hit an RBI double in the first inning and helped spark a six-run second with a three-run home run. He is 6 for 13 with three doubles, a home run, and six RBIs over the first three games of the series.
Minnesota extended its winning streak to six games with a 5-3 victory at Tampa Bay.
Eduardo Escobar hit solo homers in the sixth and eighth innings, with the second one being the final score of the game.
Joe Mauer had a tiebreaking RBI single with bases loaded in the seventh.
San Diego's Justin Upton homered twice and had three RBIs as the Padres hung on to win 6-5 at Washington.
Matt Kemp added a two-run double for the Padres, who evened the three-game series and will try for their fifth straight series victory in Thursday's finale.
Detroit's Justin Verlander kept the Los Angeles Angels hitless until the ninth inning, and steered the Tigers to a 5-0 home win.
The Los Angeles Dodgers won 7-4 at Cincinnati, with Scott Van Slyke, A.J. Ellis and Yasiel Puig all hitting homers during a five-run fourth inning.
New York's Bartolo Colon struck out eight in seven sharp innings to steer the Mets to a 9-4 win at Philadelphia.
Boston's Rick Porcello pitched seven sparkling innings in his return from a triceps injury, leading the Red Sox to a 3-0 victory over the Chicago White Sox.
Seattle's Felix Hernandez pitched eight strong innings to guide the Mariners past Oakland 8-2.
Cleveland's Jason Kipnis homered and drove in three runs as the Indians beat Milwaukee 6-2 despite having to use six pitchers.
Colorado's Brandon Barnes had three hits, including a two-run homer, as the Rockies beat Atlanta 6-3.