Joe Mauer had three hits, a walk and an RBI for Minnesota, and Brian Dozier added a pair of hits as the Twins (62-59) maintained a spot as one of the American League wild-card teams with their third straight victory.
Berrios (11-5) allowed two hits and struck out seven batters, lowering his ERA to 3.99 in a strong sophomore season. The right-hander, who was 1-2 with a 7.45 ERA in his previous four starts, had his second outing of at least seven innings and no runs allowed this season.
Greinke (14-6) lasted only four innings, giving up five runs (four earned), seven hits and a season high-tying four walks. He struck out four.
Berrios was in control throughout his outing, particularly snapping a string of recent first-inning struggles. He walked one in the first but struck out David Peralta and Paul Goldschmidt.
Greinke, who was 6-1 with a 2.78 ERA in his previous nine starts, was in trouble early. He gave up a leadoff single to Dozier and walked two batters to load the bases, but got out of the inning with two flyouts to third.
The Twins got to Greinke in the third after Daniel Descalso’s error at second base. Eddie Rosario led off with a single and Eduardo Escobar hit a groundball to second. Descalso tried to scoop the ball quickly and tag Rosario, who was running by. The ball bounced away from Descalso and the inning got away from Greinke.
Minnesota had five hits in the inning. Greinke walked No. 9-hitter Jason Castro with the bases loaded. Dozier brought in one run on an infield single. Max Kepler added a two-run single and Mauer plated Dozier with a single.
It was the shortest outing of the season for Greinke and the first time he hasn’t reached the fifth inning since Aug. 14, 2016, a span of 33 starts.
NOTES: Minnesota DH Miguel Sano left the game with left lower leg shin soreness. He was replaced in the seventh inning by Mitch Garver, who made his major league debut and struck out. … Arizona announced that LHP Robbie Ray (concussion disabled list) would rejoin the rotation this week. Ray will start Thursday. Taijuan Walker will start Monday, followed by Patrick Corbin and Zach Godley. … Diamondbacks manager Torey Lovullo withheld an announcement regarding Sunday’s starter. Braden Shipley was scratched from his Triple-A start and was headed to Minnesota as one option. … Twins manager Paul Molitor announced that RHP Tim Melville will be recalled to start one game of Monday’s doubleheader in Chicago with RHP Dillon Gee starting the other. … Arizona RF J.D. Martinez was back in the lineup after missing one game with an illness.