AUBURN HILLS, Mich. -- Dwyane Wade scored 39 points in the first 47 minutes Sunday. In the final minute, he turned into a defensive specialist.
Detroit led for the first 3½ quarters, and appeared ready to pull within a game of fifth-place Miami in the Eastern Conference standings, but Wade and Haslem made sure it didn't happen.
"They were pounding us for three quarters and a half, but we finally got some key plays down the stretch," Miami coach Erik Spoelstra said. "Dwyane was sensational -- that's what he's been all year -- and Udonis was great."
Mario Chalmers missed at the other end, but the rebound caromed long to Haslem, who drained a high-arcing jumper to put the Heat ahead.
"The ball went over everyone underneath and came out to me," he said. "I didn't know how much time was left, so I wanted to get it off quick."
"I told Stuckey on the way out of the timeout that I knew they were to do that -- I know his tendencies," Wade said. "I stayed solid and didn't get into his shot fakes, so I was able to get the block."
Detroit coach Michael Curry loudly protested the lack of a foul on Stuckey's play, and was ejected by Tony Brothers.
"We wanted Stuck to attack the basket, and that's what he did," Curry said. "I thought he was fouled on the play, and that's what I was complaining about."
Haslem then put the game away with four free throws -- the two for Curry's technicals and two for McDyess' foul.
"We knew just what was at stake in this game," Haslem said. "We knew how big it would be to get a win here."
Detroit has lost four of five, despite having a chance for victory late in each game.
"This is four games we've given away at the end," said Arron Afflalo, who had 13 points starting in the spot normally shared by Iverson and Hamilton. "We've got to find a way to pull these out."
Stuckey led the Pistons with 24 points, while McDyess had 16 points and 12 rebounds.
After trailing since the game's first basket, the Heat tied the score at 78 on Jamario Moon's driving layup with 7:35 to play. Moments later, Spoelstra picked up a technical that started a quick 5-0 run for Detroit.
Wade's fast-break dunk tied the score at 89 with 3 minutes left, but Jason Maxiell blocked O'Neal's go-ahead slam attempt on Miami's next possession.
After a Detroit miss, Stuckey fouled Wade, and his free throws gave Miami their first lead of the afternoon. Stuckey hit two free throws to tie it at 91, and the teams traded baskets to leave the game tied with a minute left.
O'Neal tipped in Haslem's miss to put the Heat ahead 95-93, and Wade blocked Afflalo's 3-point attempt, but Detroit retained possession and Herrmann's 3 gave the Pistons their last lead.
The first half was a duel between Wade and Stuckey, who had missed Detroit's previous game with flu-like symptoms. Wade won the individual battle, outscoring Stuckey 17-15, but the Pistons took a 47-43 lead at the break.
Wade scored another 14 points in the third, giving him 31, but his teammates only contributed 10 more, letting Detroit hang on to a 73-67 lead going into the fourth.
Neither team hit a 3-pointer in the first half, combining to go 0-for-9, while the Heat didn't have an offensive rebound. Miami finished 5-for-11 and the Pistons 2-for-12. ... Miami finished with 10 blocks, including four by Wade. Moon had three, and O'Neal, Michael Beasley and Jamaal Magloire one each. ... Wallace snuck into Afflalo's post-game interview session to taunt him about UCLA's loss on Saturday.
Fantasy basketball trade index: Appreciating LaMarcus Aldridge
Eric Karabell breaks down which players to deal for -- and which to trade away -- in his weekly look around the NBA.
Thunder take on the Rockets on 6-game slide
Houston Rockets (4-16, 15th in the Western Conference) vs. Oklahoma City Thunder (6-14, 13th in the Western Conference)
Milwaukee faces Charlotte, looks for 6th straight home win
Charlotte Hornets (13-10, sixth in the Eastern Conference) vs. Milwaukee Bucks (13-8, fifth in the Eastern Conference)