The upstart Portland Trail Blazers would not allow the Miami Heat to pull out of its funk.
Wesley Matthews hit a 3-pointer to put Portland in front with 26.9 seconds left and the Blazers hung on to beat Miami 92-90 Thursday night for their fourth straight win and ninth straight at the Rose Garden.
The Blazers (20-15) are now 12-3 in their last 15 games.
"Our confidence is extremely high," Matthews said. "Playing hard, playing well, we're having fun out there. So that's a great combination."
The Heat, meanwhile, have lost two straight and five of eight, yet the defending NBA champions are still 23-11 and lead the Eastern Conference by a half-game over New York.
LeBron James had 15 points, snapping his 54-game streak with at least 20 points that dated back to last season. It was his lowest point total in the last 76 regular-season and playoff contests. But James did have 10 rebounds and nine assists against Portland.
Miami led by as many as 13 points, including a 52-39 advantage at the half, but Nicolas Batum hit a layup and a free throw with 4:03 left that pulled Portland into an 82-all tie. The Blazers couldn't go ahead and Bosh made a 3 to make it 87-84 with 1:53 left.
Matthews made a 3-pointer to tie it at 88 with just under a minute to go, and after Chris Bosh dunked, Matthews hit another 3 to finally give the Blazers a 91-90 lead. LaMarcus Aldridge missed the first of two free throws with 10.4 seconds left for the final margin.
Mario Chalmers missed a 3-pointer for the Heat as time ran out.
Batum led the Blazers with 28 points, and Aldridge had 20 points and 15 rebounds. Matthews finished with 18 points.
"It felt great," Matthews said about his go-ahead 3. "It looked better."
Bosh had 29 points for the Eastern Conference-leading Heat, who were coming off an 87-77 loss to the Pacers on Tuesday night. Dwyane Wade had 18 points.
"You can beat yourself up because you want it so bad, but there are the kind of games where you say, 'Listen, a team beat us when we played our game,' so you pat them on the back and say, 'Good job,'" Wade said.
Portland was coming off a 125-119 win in overtime over Orlando at the Rose Garden on Monday night.
The Blazers led 12-10 early, but missed eight straight shots and Miami took an 18-12 lead on Wade's fast-break layup with 3:25 left in the first quarter. The Heat went up 32-24 on Ray Allen's 3-pointer early in the second.
The Heat extended it with James' dunk and Wade's hook shot to make it 52-39 at the half.
Bosh had nine points in the first eight minutes of the second half as the Heat kept a fairly wide margin. But Portland closed in late when Matthews and Batum made back-to-back layups to make it 65-61. Norris Cole quieted the crowd by answering with a 3-pointer for the Heat.
Batum's 3-pointer and Matthew's fade-away jumper narrowed it to 82-79 with 4:53 left. After rookie Damian Lillard missed a couple of free throws, Batum made a layup and a free throw to tie it up.
"It's an understatement to say it's great to beat Miami. They're a great team, defending champs," Blazers coach Terry Stotts said. "I gotta hand it to our guys for sticking with it. You keep competition, playing through and finding a way to win games. That's kind of what we did tonight and kind of what we've been doing most of the season."
Lillard, the reigning repeat NBA Rookie of the Month, had 10 points and eight assists and became the first NBA player to make at least 75 3-pointers in his first 35 career games since Allen Iverson in 1996-97.
The Heat were without Shane Battier, who has a sore right hamstring. The move was proactive, coach Eric Spoelstra said before the game.
"It was never a strain, it's just very sore," he said. "But those things can be tricky."
It was the second of a six game road trip for the Heat, who fell to 7-8 on the road this season.