Charlie Villanueva scored nine of his season-high 36 points in the fourth quarter to help the Milwaukee Bucks beat the Denver Nuggets 120-117 on Sunday.
Villanueva tied his career high with seven 3-pointers, and Ramon Sessions added 27 points for the Bucks.
Carmelo Anthony scored 33 points and Chauncey Billups added 21 for the Nuggets, who ended a season-high eight-game road trip with a 5-3 mark. Denver plays its first game at home since February 3 on Monday against the Boston Celtics.
Villanueva made four 3-pointers in the first quarter, one each in the second and third before hitting one in the fourth. It was the most 3s Denver has allowed since Jason Kidd had six for Dallas on Nov. 7.
Villanueva hit a short jumper over Linas Kleiza to put Milwaukee up 116-113 with 33.3 seconds left. Anthony fouled Luke Ridnour who made one free throw, but Anthony answered with a driving layup as he muscled through the Bucks' defense.
Sessions made one of two free throws to push the lead to 118-115 and then hounded Billups who missed a shot and Milwaukee grabbed the rebound.
Charlie Bell made two free throws for the Bucks' final points and Kleiza was ignored by Milwaukee defenders as he drove in for a dunk, Denver's final points.
Anthony turned in another gritty effort since bruising his left knee February 18 at Philadelphia. The team's leading scorer with a 21.6 average, he managed just 12 points on Friday in 116-99 loss to the Chicago Bulls and was a game-time decision against Milwaukee. He had 20 points in the first half, shooting 6-of-9 from the floor and made eight of 10 free throws.
Denver's loss to the Bucks (28-31) was only their fourth this season against a sub-.500 opponent.
Villanueva missed a technical called on Anthony who then sank one of two free throws to tie it at 105 with 6:46 to play before Nene dunked to give Denver the lead at 107-105.
The lead changed six times down the stretch before Richard Jefferson, who had 17 points, scored on a driving layup that gave Milwaukee a 114-113 lead with 1:39 left to play. Villanueva's short jumper pushed the lead to three and the Bucks hung on for the victory.
Villanueva's 3 with 10:08 left to play gave the Bucks a 103-98 lead. Chris Andersen made a layup and two free throws to pull Denver within one at 103-102, but Villanueva made a short hook in traffic to put Milwaukee back up by three.
Renaldo Balkman started for Kenyon Martin, who was out with back spasms.
The Northwest Division-leading Nuggets have been on the road 19 days, but won't get a lot of rest immediately. They play three games in five days, facing the Celtics without Kevin Garnett (right knee sprain) on Monday, the Atlanta Hawks on Wednesday and the Los Angeles Lakers on Friday.