PORTLAND, Ore. — Noah Vonleh is not sure how the ball ended up with him, though he thinks it may have bounced off of teammate Meyers Leonard.

No matter how it happened, Vonleh's layup at the buzzer gave the Portland Trail Blazers a 99-98 victory over the San Antonio Spurs on Monday night despite resting starters Damian Lillard and CJ McCollum.

"I didn't know the ball was going to bounce that way," Vonleh said. "It just magically fell into my hands and we ended up winning the game."

Shabazz Napier scored a career-high 32 points for Portland, which won its third straight a day after Denver's loss to Oklahoma City gave the Blazers the eighth and final playoff spot in the West.

Kawhi Leonard led the Spurs with 18 points.

Portland took an 88-87 lead on Napier's 3-pointer before Bryn Forbes answered with a 3 for the Spurs. San Antonio extended the lead on Jonathon Simmons' dunk and Kyle Anderson's basket.

After Pat Connaughton's long jumper for Portland, Jake Layman dunked to narrow the gap to 98-97 with 12 seconds to go. The Spurs threw an inbound out of bounds to give the ball back to Portland, and Vonleh's layup fell amid the scramble under the basket.

Vonleh finished with 12 points and 11 rebounds.

"I have no idea what happened," San Antonio's David Lee said about the final sequence of events. "It was one of those weird bounces, we looked at in on replay like 10 times and we still don't know what happened. It was a ricochet play, it went off Kyle's shin and someone's leg ... I can't explain that one."

The Blazers, who became playoff-bound on Russell Westbrook's buzzer-beating 3-pointer in Denver, will open the playoffs against the defending conference champion Warriors.

The Spurs were assured of finishing second in the standings to Golden State. San Antonio will have home-court advantage for its first-round series against the Memphis Grizzlies, who clinched the seventh seed on Friday.

Terry Stotts said before the game he met with McCollum and Lillard on Monday morning and convinced them to take a night off.

"We talked with Dame and CJ about what was best for the team. I was more concerned about CJ because he's played every game this season. That's quite an accomplishment," Stotts said.

Lillard set a franchise record with 59 points on Saturday night in a 101-86 victory over the Utah Jazz. He matched his career high with nine 3-pointers.

Portland was also without reserve guard Allen Crabbe, who missed a second game with a sore left foot.

Spurs coach Gregg Popovich played his regulars as expected, after he was disappointed by their performance in 98-87 loss Saturday night at home against the Los Angeles Clippers.

Asked afterward if he'd approach Wednesday's regular-season finale the same way, Popovich said "probably so."

San Antonio saw the return of guard Danny Green, who had missed seven games with a left quad contusion.

Centre Meyers Leonard made all three of his 3-point attempts in the first quarter and the Blazers held a 31-28 lead. Leonard had 13 points in the first period alone.

San Antonio led 76-71 going into the fourth.

"Obviously it was fun to get a win here. I was really happy, especially for all the young guys who got to play and made the most of their opportunity," Stotts said.

It was Portland's eighth straight win at home.

TIP-INS

Spurs: It was just the third trip back to Portland for LaMarcus Aldridge, who spent his first nine NBA seasons with the Blazers before going to San Antonio as a free agent prior to last season.

Trail Blazers: Lillard said the Blazers are going into the playoffs to "shock the world." Told of the statement, Popovich said "Heck yeah! That's the way he should be thinking."

FINISHING AT .500

The victory assured the Blazers of finishing the regular season with at least a .500 record even if they lose in the final game.

"When I was in Milwaukee my first year we made the playoffs, we lost the last game of the season and finished 40-42," Stotts said, adding that it's special to do both — especially after being 11 games under earlier this season.

UP NEXT

Spurs: San Antonio closes out the regular season on Wednesday at Utah.

Trail Blazers: Portland hosts the New Orleans Pelicans in the regular-season finale on Wednesday.