Texas' Michael Choice singled in the go-ahead run in the ninth innings against his old team to lift the Rangers to a 5-4 win over Oakland, cutting the gap to the American League West leader to half a game.
Elsewhere, San Diego's Chase Headley homered in the top of the 12th inning to give the Padres a 2-1 win at Milwaukee.
Miami's Jose Fernandez matched his career-high with 14 strikeouts in eight innings to guide the Marlins to a 1-0 win over Atlanta.
Colorado's Nolan Arenado hit a go-ahead homer leading off the fifth innings and that held up as the winner in the Rockies' 2-1 victory over San Francisco.
St Louis' Adam Wainwright threw seven neat innings before leaving with a knee injury, steering the Cardinals to a 3-0 win over the New York Mets.
Philadelphia's Domonic Brown doubled home the go-ahead run in the 10th innings after a costly error by Los Angeles left fielder Carl Crawford, giving the Phillies a 3-2 win at the Dodgers.
There was better news for the Dodgers' city rivals as Angels slugger Albert Pujols brought up 500 career homers in the 7-2 win at Washington.
New York's Jacoby Ellsbury doubled, tripled, drove in two runs and made a sliding catch in his return to Fenway Park, helping the Yankees beat his old team Boston 9-3.
Detroit's Miguel Cabrera broke out of a slump with a two-run homer to help the Tigers beat the Chicago White Sox 8-6.
Toronto's Brett Lawrie and Melky Cabrera each hit three-run homers in the eighth inning to power the Blue Jays to a 9-3 win against Baltimore.
Tampa Bay's David Price pitched his first complete game of the season, striking out 12, to guide the Rays to a 7-3 win over Minnesota.
Price's old teammate James Shields was almost as dominant for Kansas City, striking out nine batters to help the Royals win 8-2 at Cleveland.
In other matches, Cincinnati eased past struggling Pittsburgh 4-1, the Astros won 5-2 over Seattle, and Arizona were thumped 9-2 by the Cubs.