MILWAUKEE (AP) -- The Milwaukee Bucks finally built a lead so big even they couldn't blow it. Barely.
"We like to give our fans their money's worth," Andrew Bogut deadpanned.
"We hung in there, made our free throws and got it done," said Redd, who was 7-for-11 from the field and 12-for-14 from the foul line.
The Pistons, who had won 10 in a row before the All-Star break, are suddenly reeling after two consecutive losses despite still maintaining control of the Central Division at 39-15, 19 games ahead of cellar-dwelling Milwaukee.
"I think everybody knows we're on the other side now, going downhill," said Chauncey Billups, who had a season-high 34 points. "We've got to start fine-tuning. These are games we can't let get away; teams we're supposed to beat, we have to beat."
They almost did despite trailing by 21 after Mo Williams' jumper midway through the third quarter.
"We've kind of set the bar right now as a team that will let you back in, and that becomes a self-fulfilling prophecy," Bucks coach Larry Krystkowiak said.
Milwaukee, which blew a 17-point second-half lead to the Knicks on Feb. 9, avoided extending a four-game losing skid and snapped a streak of four straight losses to the Pistons, including being embarrassed in the first two games this season by an average of 35.5 points.
"We needed to win, for sure," Krystkowiak said. "We needed to get some of that taste out of our mouth. We had a rough stretch right before the break, it's tough to sit through a break having gone through that."
Rasheed Wallace nearly caused them more misery even though the Pistons were down 16 with 4:22 left.
Wallace finished with 21 points, hitting four 3s in the final 2:20, only to have Milwaukee hit 10 of 12 free throws in the span to hold on.
Trailing 93-81, Wallace hit three 3s and Billups added two free throws to make it 95-92 with 1:12 to play.
"He got hot," said Richard Hamilton, who finished with 11 points. "I was trying to drive and bring two guys with me and 'Sheed was on the fade and I got him three times in a row, and he made three 3s in a row."
Bogut hit a free throw and Williams, who finished with 11 points, added two more after a defensive stop to push the lead back to six before Wallace hit another 3 with 22 seconds remaining to cut it to 98-95.
After Redd hit two more free throws, Billups answered with a layup and Redd was fouled again. He made one of two to make it 101-97 and Billups missed a wide-open 3.
Williams grabbed the rebound and began falling out of bounds.
"The first thing I could think about was 'Call a timeout,'" Williams said.
But the Bucks didn't have any, and Billups hit the ensuing technical free throw with 7.6 seconds to play to make it 101-98. Wallace missed his final 3 when Bogut stepped out on defense and Redd grabbed a rebound to seal it.
"He had a great look that last one, we got him as good a look as you can and he made some big shots," Pistons coach Flip Saunders said.
Wallace didn't want to discuss his miss after the game, saying he would talk to reporters on Thursday.
"We were able to dodge a bullet when he missed that last 3," Bucks guard Charlie Bell said. "We're glad that time ran out on them."
Detroit's defense, which came in allowing an NBA-low 89.9 points per game on 43 percent shooting, struggled as the Pistons never appeared to shake off their post All-Star break malaise that began when they were drubbed at home 103-85 by Orlando on Tuesday until it was too late.
"We were just way too passive," Saunders said. "When we turned the heat up we were a lot better defensively, and that's how we have been playing prior to the break."
The Pistons will get another chance on Friday when the Bucks visit for the final game of the season series.
"They're going to remember this one," Bogut said. "They're going to try to blow us out of their gym."
Desmond Mason scored 16 points for the Bucks. ... Billups had 16 points in the third quarter, while Antonio McDyess had six to account for all of Detroit's points in that period. McDyess finished with 14 rebounds. ... Bucks F Charlie Villanueva returned to the starting lineup after missing the final game before the All-Star break with a sprained right ankle. ... The Bucks honored Hall of Famer Bob Lanier at halftime. Lanier played 14 seasons with the Pistons and Bucks, averaging 20.1 points and 10.1 rebounds per game.