MILWAUKEE -- The Milwaukee Bucks shot 1-of-16 from 3-point range and 39 percent from the field. That probably would have meant a blowout loss not long ago.
"It's huge for us," said Luke Ridnour, who had 11 points, 11 assists and six steals. "A couple of weeks ago, we might not have won this game, shooting the way we did. We wouldn't have gotten the stops we needed. Sometimes your offense can affect your defense, but tonight we were able to push through it.
"Nobody hung their heads, and we just kept fighting."
The three-game winning streak is Milwaukee's longest this season, and the Bucks snapped an eight-game losing streak against Utah. The Jazz finished 2-3 on their five-game road trip.
"We've been turning the ball over a number times in the last few games and having a terrible time handling the basketball," Utah coach Jerry Sloan said. "That doesn't give you much of a chance to win.
"I didn't think we really busted a gut to play the game. I thought we played kind of soft and looked like we were feeling sorry for ourself a little bit. That looks like street ball to me, the way we played. Come out and guys trying to get shots off from 25 feet, and there's no chance to rebound it. Paul Millsap can't get all of them."
Utah also received a scare in the first quarter, when Millsap injured his left knee after he landed awkwardly trying to block Redd's layup. He stayed on the ground for several minutes before being helped to the locker room, putting no pressure on his left leg.
X-rays were negative, and Millsap returned to the bench late in the second quarter with his left knee in a brace. He started the second half and finished with 11 points and nine rebounds, snapping his streak of 15 straight double-doubles, which was the longest active stretch in the NBA.
Utah shot 38 percent (30-for-79), including 3-for-14 from behind the arc. The Bucks weren't much better, making 33 of 85 shots and its season-low one 3-pointer.
"I felt like we played well again, especially on the defensive end," Bucks coach Scott Skiles said. "The guys have made progress."
The Jazz never led after the first quarter and trailed by as many as 19 early in the second half, but they tied it at 77 and were within 88-85 after four straight points by Kirilenko. Redd sank a 15-footer with 1:12 remaining to seal it.
"We were aggressive," Redd said. "We are not going to back down. We did a good job of just persevering. It got down to two, three a couple times, and we just made plays when we had to. This was a test of our will tonight."
The Bucks scored 17 points off 12 Jazz turnovers in the first half and led 50-38 at halftime. Redd, who shot just 1-of-9 on 3-pointers and 9-of-25 overall, had 12 points in the half.
Ramon Sessions scored six points in the opening minutes of the fourth quarter to extend Milwaukee's lead to 77-67, but Utah came back with a 10-0 run, including five points from Williams, to make it 77-77 with 7:08 remaining.
The Bucks went back up 83-77 on six free throws, four by Redd.
"We've still got a lot of work to do," Redd said. "The playoff race is going to be tight down the stretch, and we have to continue to grind it out. That was a grind-out game."
Bucks guard Charlie Bell left the game in the second quarter with right knee soreness and did not return.
Millsap had an ice bag and wrap on his left knee after the game. "I felt something pop, and I felt like it was over," he said. "I felt like, 'Why me?' After I got it moving, it felt pretty good." Said Williams: "It was a little scary there for a minute. When he went down, it made me nervous, real nervous." ... Okur, who is averaging 16.6 points and 8.2 rebounds, had tallied at least 23 points and nine rebounds in each of his last three contests. ... The Bucks have won five in a row at home, their longest home winning streak since the start of the 2007-08 season, when they had six straight victories at the Bradley Center.