Halladay pitched seven solid innings to win his fifth straight start, Alex Rios hit two homers and the Toronto Blue Jays beat the Rays 6-4 on Friday night to extend their season-high winning streak to six.
"Doc's had a great year," Blue Jays manager Cito Gaston said. "If Doc had more run support [earlier in the season], he'd certainly have over 20 wins right now."
Rios hit a solo homer in the third and a two-run drive in the eighth for his third career multihomer game and second this season.
"I'm being aggressive, but in the strike zone," Rios said. "I don't want to be wild."
The AL East-leading Rays have lost three of four.
Halladay (18-9) allowed three runs, one earned, and seven hits to improve to 10-3 in his last 13 starts. He struck out seven and walked none.
The right-hander entered 1-3 with a 4.82 ERA in four starts against the Rays this season. He has never lost to the same opponent four times in a single year. It won't happen this year either, and Halladay is happy not to have to face the Rays again until 2009.
"You always look for the challenge, but I'm not disappointed by any means," Halladay said. "They've been a great team this year, the way they've turned things around."
The Rays jumped on Halladay with two in the first. Akinori Iwamura reached on second baseman Joe Inglett's error and advanced to third on B.J. Upton's double before Carlos Pena and Cliff Floyd each hit a sacrifice fly.
Halladay ended the inning by striking out Willy Aybar, the start of a stretch where he set down 17 of 20.
"You've got to get a lot on him early because he's going to settle down," Rays manager Joe Maddon said. "I don't think he's ever not settled down."
Scott Downs followed Halladay with a scoreless eighth. B.J. Ryan gave up Jason Bartlett's RBI double in the ninth but struck out Pena with runners at second and third for his 27th save in 30 opportunities.
Sonnanstine was disappointed not to hold the early lead against Halladay.
"He's one of the better pitchers I've ever had to pitch against," Sonnanstine said. "Coming out of the gates with those two runs, they're precious. I'm kind of disappointed that I didn't go back out there and put another zero up."
Bartlett cut it to 4-3 with an RBI single in the seventh, but Iwamura bunted back to the mound on a squeeze attempt with runners at second and third, with Gabe Gross getting caught in a rundown and tagged out by catcher Rod Barajas.
"It was wide open," Maddon said of the squeeze attempt. "We just didn't get it done."
Iwamura failed in a similar situation in an Aug. 12 loss at Oakland, and was upset at himself for not getting the bunt past the mound.
"I accept that I made a mistake," Iwamura said through a translator. "We've got a game tomorrow, too, so I've got to keep my head up."
Halladay threw a called third strike past Upton to end the inning, stranding runners at second and third.
"It was a good pitch," Maddon said. "He's been known to make big pitches when he needs to."
Rios followed John McDonnell's eighth-inning double with his 13th homer, giving Toronto a 6-3 lead.
Sonnanstine (13-7) lost for the first time in seven starts, allowing four runs and five hits in six innings.
The roof at Rogers Center opened after the third, but had to be closed again midway through the sixth when a light rain began to fall.
Rays 3B Evan Longoria (fractured wrist) will take 20 to 40 swings on Saturday. Longoria has been out since Aug. 11, and the Rays want him to take two or three days of regular batting practice before activating him off the DL. ... Rays OF Carl Crawford (finger) is in Arizona visiting his doctor and won't rejoin the team until after this nine-game road trip. Tampa Bay returns home Sept. 15. ... Former Blue Jays star Joe Carter attended the game.