"In the past couple of games, the third quarter has been our downfall, just coming out flat and then we're trying to play catch-up later in the game," McGrady said. "Tonight I wanted to impose my will on the game in the third quarter and, as you see, I was pretty aggressive."
Leading by seven points at the half, Villanueva said the Pistons reminded themselves not to let up after the intermission.
"That was something we talked about at halftime," Villanueva said. "We were poised throughout the whole game. We played a good 48 minutes of basketball. We beat them in every quarter except for the last one. I think we played well overall."
Pistons coach John Kuester said McGrady, who made his second straight start in Detroit's new-look lineup, helped control the flow of the offense.
"He did a great job," Kuester said. "I was very impressed with his pace of the game, his control, making big plays when we needed some big plays going down the stretch."
A reserve earlier this season as he rehabbed his surgically repaired knee, McGrady said his health is coming along.
"I'm starting to feel a lot better physically," the former Raptor said. "Being out for so long I think I've actually gotten a little smarter on the basketball court, just from seeing the game from afar."
"Guys should be embarrassed when a team runs a play six times in a row right at you," Raptors coach Jay Triano said.
The Pistons came in having lost 12 of their previous 13 road games, including the past five in a row. Detroit's last road win was a 115-93 win at Toronto on December 15.
In that game, Richard Hamilton scored 35 points and made a career-high six 3-pointers. Hamilton was held out of this one, the second straight game he has not played. Reported to be part of the Carmelo Anthony trade negotiations between Denver, New Jersey and Detroit, Hamilton sat out Detroit's home loss to Memphis on Wednesday.
"This is a very different situation for me," Hamilton said. "I've never been in this situation my whole career. I don't know where to look."
Hamilton said he's consulted his agent about the sudden lack of court time, but has not spoken with anyone else.
"Do I want to play?" Hamilton said. "Yes. Do I want to be on the floor competing? Yes. Am I doing that right now? No. I want to play, I want to get on the floor, I want to get an opportunity to do something that I love to do."
Raptors guard Leandro Barbosa had to be carried to the locker room with 3 seconds left in the half after he strained his right hamstring. He did not return.
Barbosa and Sonny Weems (back) will not travel with the team to Washington for Saturday's game against the Wizards, the opener of the five-game trip.
Back-to-back jump shots by Bargnani cut it to 96-91 with 1:18 left, the closest Toronto had been in the fourth. But McGrady answered with a reverse layup, his first basket of the fourth quarter, to push Detroit's lead back to seven points.
DeRozan made a jumper in the lane and McGrady shot's rimmed out, but Monroe stripped Johnson under the Detroit basket. Stuckey was fouled and made one of two with 18 seconds remaining to put the Pistons up by six. Bargnani missed a layup and Gordon was fouled, hitting both free throws with 11.5 seconds to go and giving Detroit a 101-93 lead. Calderon finished with a layup, but Toronto lost for the 15th time in 20 games.
Detroit's Ben Wallace (left ankle) missed his second straight game. ... Weems was inactive for the 12th time in 13 games. Weems dressed but did not play in Wednesday's loss to Atlanta. ... Detroit is 4-17 on the road.