TORONTO -- Sloppy outfield play cost the Blue Jays a couple of runs on Saturday.
On Sunday, Randal Grichuk changed the conversation with a highlight reel catch to start a double play.
Kevin Pillar homered for the third time in two games, J.A. Happ pitched seven innings to win his fourth straight decision and the Toronto Blue Jays beat the Texas Rangers 7-2 on Sunday to avoid a three-game sweep.
Teoscar Hernandez and Yangervis Solarte added solo home runs as the Blue Jays snapped a four-game home losing streak and won for the third time in their past 10. Hernandez reached base three times and scored twice.
Grichuk made the defensive play of the game to end in the first. A diving Grichuk managed to cradle Isiah Kiner-Falefa's sinking liner between his forearm and his chest, then threw to second base to double off Delino DeShields, who had reached on an error.
"That was huge to get out of there with a guy with as good speed as there is in the league on second," an appreciative Happ said.
Grichuk said he was trying to stay low to keep the ball out of the lights, but stumbled just as he started to dive.
"I knew it was going to come down right around that area," Grichuk said. "I figured `I'm going down but let's throw the glove up and have a chance.' Luckily I was able to make the play. There was a method, even through it looked absolutely terrible."
Manager John Gibbons said Grichuk's catch "kind of set the tone a little bit, especially with the way things have been going."
Pillar, who has plenty of highlight reel catches on his resume, but whose misplay led to a two-run double Saturday, joked that Grichuk's catch was short on style points.
"Mine are much more graceful," Pillar said.
Kiner-Falefa started a nifty double play of his own to end the fourth. Toronto had the bases loaded when Kiner-Falefa snared Steve Pearce's line drive and stepped on second to double up Lourdes Gurriel Jr.
Happ (4-1) allowed two runs and five hits to remain unbeaten since opening day, a March 29 loss to the Yankees. The left-hander walked none and matched a season-high with nine strikeouts. It was just the fourth time in 27 games a Toronto started had finished seven innings.
"We desperately needed that," Gibbons said.
Renato Nunez hit his first home run of the season for the Rangers, whose season-high three-game winning streak was snapped.
Pillar, who went deep twice in Saturday's 7-4 loss, made it three homers in four at bats with a leadoff blast in the fourth, his fourth.
All three Blue Jays home runs came off left-hander Martin Perez (2-3), who allowed four runs and five hits in four innings. Perez has failed to reach the fifth in three of his past four starts.
"It was a challenge for him to keep his delivery together today," Rangers manager Jeff Banister said.
Perez, who has a 9.62 ERA on the road and a 9.67 ERA overall, took issue with some calls by home plate umpire Tim Timmons.
"I threw good pitches and they didn't call them," Perez said. "They looked like strikes and they didn't give them to me."
Solarte hit a leadoff homer in the second, his seventh, and Hernandez connected to begin the third, his fourth.
Rangers left fielder Ryan Rua made a sliding catch in foul territory on Aledmys Diaz's fly ball for the final out of the sixth. Toronto challenged but the call was upheld.
Happ is the second pitcher in Blue Jays history to walk nine and strike out at least nine in consecutive starts. The other was Roger Clemens, who did it May 5 and May 10, 1997.
Grichuk snapped an 0 for 18 slump with a single in the fourth and went 2 for 3 with two RBI, raising his average from .079 to .106. "He needed at least one sanity hit," Gibbons said.
Blue Jays: 3B Josh Donaldson(right shoulder) could rejoin the Blue Jays in Tampa Bay next weekend, manager John Gibbons said. Donaldson started at DH and went 0 for 3 Saturday in his first rehab game at Class-A Dunedin. ... Toronto optioned struggling 2B Devon Travis to Triple-A Buffalo and recalled RHP Carlos Ramirez to bolster its overworked bullpen.
Rangers: LHP Cole Hames (1-4, 4.41) starts the opener of a thee-game series at Cleveland. Texas has scored two or fewer runs in four of Hames' six starts. RHP Trevor Bauer (2-2, 2.41) starts for the Indians.