Scherzer (11-3), who has held opponents to a combined five earned runs in his last four starts, allowed just four hits and struck out seven. Joe Nathan picked up his 18th save for the American League Central-leading Tigers. Greinke (11-5) gave up three runs and seven hits while striking out eight.
Austin Jackson had two extra-base hits and scored twice to lead Detroit's offense. Miguel Rojas hit his first major league home run for the Dodgers (51-42). Jackson's leadoff triple sparked a two-run first for the Tigers.
Angels 8, Blue Jays 7
ANAHEIM, Calif. -- Albert Pujols' two-run homer in the seventh inning lifted Anaheim over Toronto.
Pitching and defense were mostly absent during the game that lasted nearly four hours and included 22 hits and four errors.
Trailing 7-6 in the seventh, the Angels had Mike Trout on first base with one out when Pujols launched a pitch from Blue Jays left-hander Aaron Loup (2-2) deep to center field. Toronto center fielder Colby Lewis leaped and got his glove on the ball, but it caromed over the fence for what turned out to be the winner.
For Pujols, the home run was the 512th of his career, tying him with Ernie Banks and Eddie Mathews for 21st in major league history.
Red Sox 5, White Sox 4
BOSTON -- Boston, about to fall to 1-8 on its homestand, rallied late and pulled out the victory over Chicago when pinch hitter Daniel Nava doubled home the tying run and scored on Brock Holt's single in the ninth.
The defending champions scored three runs in the eighth inning before the walk-off rally, which made a winner of reliever Koji Uehara, who struck out the side in the top of the ninth.
Rookie outfielder Mookie Betts, who turned an infield hit into a double to fuel the eighth-inning rally, was hit by a pitch to start the ninth-inning uprising against Javy Guerra (0-1).
Royals 5, Rays 4
ST. PETERSBURG, Fla. -- Salvador Perez's three-run home run in the top of the ninth inning gave Kansas City a comeback win over Tampa Bay.
Perez, the American League's starting catcher in next week's All-Star Game, popped out with the bases loaded and the Royals trailing 4-2 in the seventh. Two innings later, he hit an arcing shot against reliever Kirby Yates (0-1) that just cleared the half wall down the left field line.
Kansas City got a leadoff single from Jarrod Dyson against right-hander Joel Peralta and a walk by Eric Hosmer with one out before Yates entered to face Perez. The catcher's 11th homer of the season punctuated a 2-for-5, three-RBI night.
Phillies 4, Brewers 1
MILWAUKEE -- Chase Utley and Jimmy Rollins homered, and Roberto Hernandez threw eight effective innings as Philadelphia beat Milwaukee.
Hernandez (4-8) lost his previous three decisions and six of his last seven, but he was sharp against Milwaukee. The right-hander allowed one run on three hits and two walks while striking out three. Closer Jonathan Papelbon worked a perfect ninth for his 22nd save of the season.
It was 1-1 in the sixth when Phillies catcher Cameron Rupp led off with a single. Two batters later, the Phillies took a 3-1 lead when Rollins took Kyle Lohse (9-4) to right for his ninth home run of the season.
Mets 4, Braves 1
NEW YORK -- Right-hander Dillon Gee threw seven impressive innings in his first start in almost two months, and catcher Travis d'Arnaud capped a three-run seventh inning with a long two-run homer as New York beat Atlanta.
The Mets have won four in a row, their first four-game winning streak since July 7-10 of last season. New York will go for the four-game sweep of the Braves -- which would be its first of Atlanta since 1989 -- on Thursday night.
Gee, who hadn't pitched since May 10 due to a right lat strain, improved to 4-1 after allowing one run on six hits and one walk while striking out four in a crisp 85-pitch effort.
Nationals 6, Orioles 2
BALTIMORE -- Catcher Wilson Ramos, shortstop Ian Desmond and right fielder Jayson Werth hit solo home runs to help Washington defeat Baltimore.
Werth and first baseman Adam LaRoche finished with two RBIs to support starter Doug Fister, who posted his third consecutive win and ended Baltimore's three-game winning streak.
Fister (8-2) struggled early, needing 31 pitches to get through the first inning, but he lasted seven innings. He gave up two runs on seven hits and worked his way out of two jams thanks to double plays.
Reds 4, Cubs 1
CINCINNATI -- Alfredo Simon took over the NL lead in victories with a six solid innings, and center fielder Billy Hamilton's run-scoring triple ignited a three-run rally in the fifth to lift Cincinnati over Chicago.
Simon (12-3) allowed one run on four hits with two walks and eight strikeouts over 6 2/3 innings and a season-high 119 pitches.
Cincinnati has won five straight games and 14 of its past 19. On Thursday, the Reds will go for their first five-game series sweep since 1976.
Rockies 6, Padres 3
DENVER -- Colorado matched its season high with five home runs in its victory over San Diego.
Joaquin Benoit took the mound for the Padres in the eighth inning with a scoreless streak of 19 innings, but it came to a sudden end when he yielded two homers and three runs as the Rockies broke a 3-3 tie. After he gave up a one-out single to Charlie Blackmon, Drew Stubbs hit a two-run shot, his ninth homer of the season. Troy Tulowitzki, who along with Blackmon homered in the first inning, followed Stubbs with his 20th homer of the season.
Catcher Wilin Rosario also homered for the Rockies, who won back-to-back games for the first time since their season-high five-game winning streak June 11-15.
Diamondbacks 4, Marlins 3
PHOENIX -- Arizona first baseman Paul Goldschmidt doubled in two runs to cap a three-run 10th inning against closer Steve Cishek to lift the Diamondbacks over Miami.
Pinch hitter Aaron Hill singled to right field to open the 10th against Cishek (4-5) and took second when Ender Inciarte walked. David Peralta singled to center field to drive in Hill before Goldschmidt hit the first pitch to the wall in left-center field. Goldschmidt leads the majors with 35 doubles.
Miami took a 3-1 lead in the top of the 10th when Donovan Solano doubled in two runs with two outs against Brad Ziegler (4-1).