Carlos Gomez had tied the game in the eighth for the Rays against Ryan Tepera (2-1) with his fifth homer of the season.
Tepera survived a walk, a balk and a single that followed and picked up the win.
Pillar led off the ninth with a double against Alex Colome (2-4), took third on a groundout by Kendrys Morales and scored on a wild pitch.
Roberto Osuna pitched around a single in the bottom of the ninth to earn his ninth save.
Rays starter Chris Archer allowed one run, five hits and no walks while striking out six in a season-best seven innings.
Blue Jays starter Marco Estrada allowed four hits and four walks and struck out three in six innings.
Toronto finished an eight-game road trip at 4-4.
Blue Jays manager John Gibbons was ejected for the second game in a row for arguing the balk call in the eighth.
The Blue Jays took a 1-0 lead in the fifth inning. Anthony Alford singled, stole second, took third on Luke Maile's fly out to right and scored on an infield single by Aledmys Diaz on a grounder to first.
Diaz took an awkward step at first base and went sprawling with a left ankle injury. He was removed from the field on a cart. Lourdes Gurriel Jr. ran for Diaz and replaced him at shortstop. X-rays on Diaz were negative, and he was listed as day to day with a sprained left ankle.
Tampa Bay's Wilson Ramos had two singles to extend his hit streak to 14 games, tying the franchise record hit streak by a catcher set by Toby Hall in 2001.
Blue Jays first baseman Justin Smoak returned after spending three games on the paternity list because of the birth of his daughter. Infielder Richard Urena was optioned to Triple-A Buffalo.
--Field Level Media
Toronto | Tampa Bay | |
Marco Estrada | Player | Chris Archer |
No Decision | W/L | No Decision |
6.0 | IP | 7.0 |
3 | Strikeouts | 6 |
4 | Hits | 5 |
0.00 | ERA | 1.29 |
Toronto | Tampa Bay | |
Kevin Pillar | Player | Carlos Gomez |
2 | Hits | 3 |
0 | RBI | 1 |
0 | HR | 1 |
4 | TB | 6 |
.500 | Avg | .750 |