Carlos Villanueva won his fourth straight start, Travis Snider hit a two-run homer and the Toronto Blue Jays beat the Tigers 8-3 on Friday night.
"We've got to do a better job of shutting the door on some of these teams that we're more than capable of doing," Porcello said, referring both to his own effort and Justin Verlander's loss at Cleveland on Thursday.
Jeff Mathis drove in three runs with a bases-loaded double and Omar Vizquel had two hits as Toronto won for the fifth time in seven games.
"Carlos pitched a great game, everybody contributed," Vizquel said. "Mathis got the big shot that got everybody home and we got something going there. The rest was up to the bullpen, who did a great job."
Miguel Cabrera and Prince Fielder hit back-to-back homers for Detroit in the first inning but the Tigers lost for the third time in four games.
"We haven't swung the bats good the last few days," Leyland grumbled. "We didn't swing the bats good in Cleveland and we didn't swing the bats good again here tonight."
Cabrera's homer was his 25th, and raised his major league-leading RBI total to 83. For Fielder, the homer was his 16th.
Detroit has won nine of 14 since the All-Star break but is just 3-4 away from home in that time.
Rick Porcello (7-6) failed to extend his road winning streak to four games, allowing five runs and six hits in six innings. Porcello, who won a career-best four straight road games as a rookie in 2009, walked two and struck out one in his first road defeat since June 8 at Cincinnati.
Villanueva (6-0) saw both Cabrera and Fielder go deep over a three-pitch span in the first inning, but didn't give up another run. Unbeaten in five starts since joining Toronto's rotation after 22 relief appearances, the right-hander allowed four hits in five innings, walked two and struck out three.
"We felt like we had a shot at him, we just didn't do anything," Leyland said. "He shut us down pretty good the rest of the game."
Outfielder Quintin Berry credited Villanueva for mixing well after the shaky first.
"Everybody knows he's got many pitches he can throw and he was throwing them all," Berry said. "We were doing a good job of trying to wait him out but he's got good stuff."
Blue Jays manager John Farrell said Villanueva has done a good job of keeping the Blue Jays close in all of his outings as a starter, never allowing more than three runs.
"What he has shown repeatedly is that he is going to keep the game under control," Farrell said. "He sets the tone, he throws strikes and is capable of making the key pitch in tough situations."
Aaron Loup worked 1 1-3 innings, Brandon Lyon got two outs, Darren Oliver gave up Fielder's RBI single in the eighth and Casey Janssen finished.
Toronto cut Detroit's early lead in half with a run in the bottom of the first. Vizquel doubled, his first extra-base hit of the season, and scored on Edwin Encarnacion's two-out single.
The Blue Jays took the lead with a four-run fourth, loading the bases with a single and two walks before Mathis hit a two-out double just beyond the reach of Berry in left, scoring all three runners.
"He was one pitch away from getting out of that inning and he hung a slider to Mathis that cleared the bases," Leyland said.
Berry came close to making the catch, but wasn't able to run it down in time.
"I thought I had a good shot at it," he said, "and it just kept going and started tailing away from me and I couldn't quite get to it."
Porcello was particularly disappointed at his failure to retire Mathis.
"I got the right-handed hitter up that I wanted up there and just didn't make a good pitch to him and got burned," Porcello said. "That ended up being the difference."
Anthony Gose followed with a bad-hop single that eluded Fielder, giving the rookie outfielder his first career RBI.
After Yan Gomes reached on a throwing error by second baseman Omar Infante in the eighth, Snider followed with a blast to right-center, his third in five games.
NOTES: Vizquel matched Pete Rose as the second-oldest players to hit a triple at 45 years, 94 days. Julio Franco (46 years, 309 days) is the oldest. ... The speedy Gose followed his first RBI with his first career stolen base. ... Blue Jays SS Yunel Escobar and DH Adam Lind were scratched with back soreness. Vizquel made his third straight start in Escobar's place, while Encarnacion moved to DH and Gomes took over at 1B. ... Toronto RHP Drew Hutchison (elbow) played catch Friday for the first time since injuring his arm six weeks ago, making about 30 throws from 45 feet. ... Blue Jays RHP Brandon Morrow (left oblique) threw a bullpen session Friday and remains on track to make his first minor league rehab start Sunday, a two-inning stint at Class-A Dunedin. ... Detroit's last visit to Toronto was in May, 2011, a series that saw Justin Verlander throw his second career no-hitter. ... RHP Anibal Sanchez, acquired from Miami this week, makes his Tigers debut Saturday afternoon against Blue Jays RHP Henderson Alvarez.