Updated

Reserve Matt Bonner scored all 17 of his points in the second half, Manu Ginobili added 23 and the San Antonio Spurs beat the Milwaukee Bucks 91-84 on Wednesday night for their fourth straight win.

The Spurs improved the NBA's best record to 33-6 despite a pace more fitting to the grinding Bucks, who came in as the worst shooting and lowest scoring team in the league.

Trailing by two, Bonner sparked an 11-2 run after hitting two 3-pointers and a floater that gave San Antonio a 79-72 lead with 8:32 left. When Milwaukee cut it to three late, Bonner answered with a 15-footer with 57 seconds to play that halted the Bucks' rally.

John Salmons scored 17 and Andrew Bogut had 15 points and 14 rebounds for the Bucks, losers of four of their last five.

After the Spurs' spurt gave them a seven-point lead, both teams went cold over a nearly 4-minute span before a basket by Tim Duncan. Ersan Ilyasova, who finished with 11 points and 10 rebounds, converted a three-point play for the Bucks and Salmons hit a jumper and a 3-pointer that cut San Antonio's lead to 81-80 with 3:11 to go.

But Ginobili hit a floating 6-footer, Ilyasova threw the ball away and Tony Parker found Duncan all alone under the basket for a slam that gave San Antonio an 85-80 lead.

Salmons hit two free throws, but Bonner answered with his final points to seal the victory.

Since Ginobili was reinserted into the starting lineup late last season, he's scored 10 points or more in 54 of his last 59 games.

San Antonio, which won Tuesday night in Minnesota, spent most of the game trailing and looking tired before taking its first lead in more than 25 minutes at 59-57 when Bonner was left alone for a 3 late in the third.

An incredible effort by 5-foot-5 Earl Boykins helped Milwaukee regain a small advantage heading into the fourth.

With 1:58 left in the third and 4 seconds on the shot clock, the 6-foot-11 Duncan switched to guard Boykins, who picked up his dribble, pump faked and flipped an underhanded shot under Duncan's left arm from about 10 feet that fell to give Milwaukee a 64-61 lead.

Still, the Bucks (14-22) dropped another close game against another strong opponent nearing the season's midway point.

The Bucks, who returned from Atlanta on Tuesday night after their game with the Hawks was canceled due to a winter storm, have now played all their games against five of the top six Western Conference teams.

Drew Gooden returned for Milwaukee after missing 15 of the last 20 games with a left foot injury. He finished with eight points in 11 minutes.

The Spurs used a 9-0 run to dig out of a 32-23 hole midway through the second quarter, but didn't have an early answer for Bogut a night after Kevin Love posted a 20-point, 20-rebound effort against them.

Bogut already had a double-double of his own with just under 3 minutes to play in the second quarter. He tipped in a miss, drove around Duncan for a layup with his left hand and then finished with his right as the Bucks went up by as many as 10 and took a 51-43 halftime lead.

Notes: Twenty-six of the Bucks' 36 games this season have been against teams .500 or better, the most in the NBA. ... The Spurs have used the same starting lineup for every game this season. ... Spurs coach Gregg Popovich was angry at Richard Jefferson midway through the first quarter after it appeared the former Bucks forward didn't properly rotate and allowed a 3-pointer by Salmons in San Antonio's zone defense.