Gregg Zaun hit a three-run homer in a five-run sixth inning, and the Blue Jays completed the sweep with a 7-4 victory on Thursday.
Toronto started its homestand 0-5 against the New York Yankees and the Baltimore Orioles.
"I'm pretty happy with where this team is sitting at this point, especially with the difficulty of the schedule we've had early on," Zaun said.
The Blue Jays (12-11) next go to New York and Baltimore on a six-game trip.
"Baltimore put it on us pretty good. We got a little payback in mind," Zaun said. "It's nice go on the road with momentum."
Toronto outscored the Devil Rays 23-11 in the series and swept them at home for the first time since July 23-25 last year. The Blue Jays are 3-0 since replacing hitting coach Make Barnett with first base coach Mickey Brantley.
Tampa Bay tied a season-high with its fourth straight loss and dropped to 1-7 on the road.
"You know what I'd like to see? Some wins. I think everybody would like to see that," Tampa Bay manager Lou Piniella said.
Toronto starter Josh Towers (2-1) settled down after allowing three runs in the first and wound up giving up three runs and seven hits in 6 2/3 innings with six strikeouts and no walks.
Towers has had his problems in the first before.
"I didn't have that here we go again feeling," Towers said. "I knew that I was throwing the ball good enough. It worked out. I put up zeros the rest of the game."
In the ninth, Justin Speier retired the first batters before allowing a double to Alex Sanchez and an infield single to Chris Singleton. Miguel Batista came on and allowed an RBI infield single to Nick Green before retiring Carl Crawford on a foul popup for his sixth save in seven chances.
Down 3-0 in the sixth, the Blue Jays sent 10 batters to the plate. Corey Koskie and Shea Hillenbrand hit consecutive singles, and Eric Hinske had a two-run double. After Alex Rios chased starter Doug Waechter (0-1) with a single, Piniella brought in Casey Fossum, who gave up the homer to Zaun, his first batter.
Reed Johnson added a two-run single off Danys Baez in the eighth.
Waechter gave up four runs and eight hits in 5 1/3 innings.
"He pitched good for five innings, but they got to him in the sixth," Piniella said. "He threw the ball fine. This kid has just got to learn how to get through the third and fourth time through the lineup. That's been a problem."
Tampa Bay scored in the first on Julio Lugo's RBI single, and run-scoring doubles by Travis Lee and Jonny Gomes.
- Toronto has won 12 of its last 15 home games against Tampa Bay.
- Tampa Bay C Charles Johnson returned to the lineup after missing three games with a strained right shoulder.
- The Devil Rays, on a six-game trip, play at Baltimore this weekend.