PORTLAND, Ore. -- Wesley Matthews' shot wasn't falling -- until it had to in the clutch.
Matthews' back-to-back 3-pointers in the final minute lifted the Portland Trail Blazers to a come-from-behind, 92-90 victory over the Miami Heat on Thursday night at the Rose Garden.
Until that point, Matthews -- who finished with 18 points -- had made only five of 16 shots from the field.
"If I didn't shoot with confidence, they probably weren't going in," Matthews said. "That's how this game works. You believe, you play hard, you compete, you play the right way, you play with confidence, and the basketball gods will look out for you."
Portland (20-15) earned its 12th win in 15 games and its ninth consecutive home victory. The Blazers trailed by 12 points early in the fourth quarter before mounting a rally that had the Garden noise level at its highest crescendo at game's end.
Nicolas Batum collected 28 points, seven rebounds and five assists for the Blazers, who also got 20 points and 15 boards from LaMarcus Aldridge.
"It's an understatement to say it's great to beat Miami," Portland coach Terry Stotts said. "I have to hand it to our guys for sticking with it. You (have to) keep competing and playing through and finding ways to win games. That's what we did tonight, and what we've been doing most of the season."
Miami's Chris Bosh scored 29 points, Dwyane Wade added 18 points, and LeBron James had 15 points, 10 rebounds and nine assists. The Heat (23-11) lost for the fifth time in the past eight games.
James' streak of scoring 20 or more points ended at 54 games, dating to last season, including the playoffs. He finished 6-for-16 from the field and scored only three points in the second half.
"I just tried to make everything tough for him," said Matthews, who had the defensive assignment on James most of the way. "Make his catches tough. Make him work on the other end by playing defense, but mostly just make him shoot contested shots."
Miami started the fourth quarter with a 12-5 run to take a 80-68 lead.
Portland's response was emphatic -- a 14-2 surge. Batum's three-point play after a steal tied the count at 82-82 with 4:03 remaining.
Ray Allen buried a 3-pointer to give Miami an 85-82 lead. Batum's two free throws closed the gap to 85-84 with 2:39 left. Bosh's jumper from the top of the key upped the Heat's lead to 87-84 with 1:53 to go. Aldridge sank one of two at the line to make it 87-85 with 1:36 to play before Allen made one of two to push the margin to 88-85 with 1:05 on the clock.
Matthews knocked down a 3-pointer to tie the score at 88-88 with 58 seconds left, but Bosh's dunk put Miami on top again at 90-88 with 47 seconds to go. Matthews' step-back 3-pointer with 26.7 seconds left put Portland in front 91-90, and after Allen missed a wide-open 3-point attempt at the other end, Aldridge rebounded and was fouled with 10.4 seconds remaining. Portland's all-star power forward missed the first attempt, then made the second, and it was 92-90 with 10.4 seconds left.
Mario Chalmers' wide-open 3-point try bounced away at the buzzer, and the game was Portland's.
"We'll take those (last two missed 3-pointers) any day of the week," Miami coach Erik Spoelstra said. "But it's a tough loss, no doubt about it. Our guys are disappointed about that. With seven minutes to go, we're taking control of the game and gaining some confidence in our defense, and then we slipped a little bit.
"But it's still a ballgame down to the end, and they made more plays."
NOTES: Portland won despite shooting only 37.5 percent from the field. Only once this season have the Blazers shot worse and won, when they hit 35.9 percent from the floor in a 101-93 victory over the Denver Nuggets on Dec. 20. ... Miami, which entered the game second in the NBA in 3-point percentage (39.4 percent), made only six of 19 attempts from beyond the arc (31.6 percent). ... Miami reserve forward Shane Battier sat out the game with a sore hamstring. Spoelstra doesn't think the ailment will keep the 11-year veteran out of action long. ... Portland rookie center Meyers Leonard missed his sixth straight game with a sprained ankle. "He's still pretty tender," Stotts said. "It will be two weeks on Saturday, and he's not close to coming back." ... Stotts missed practice Wednesday but looked chipper and healthy as he met with reporters pregame. "Feeling much better," he said. "It was a 24-hour bug. Wasn't pretty."