PORTLAND -- With an ailing groin too sore to allow forward LeBron James to play, Miami needed someone else to step up.
Center Chris Bosh answered the call, scoring a season-high 37 points, including the game-winning 3-pointer with half a second remaining in the Heat's 108-107 victory over the Portland Trail Blazers on Saturday night at the Moda Center.
The Trail Blazers had a final chance to win, but forward LaMarcus Aldridge missed a short jumper after taking a lob pass at the rim as time expired.
Bosh sank 15 of 26 shots from the field, including 3 of 3 from 3-point range for the Heat (24-7), who called timeout after forward Nicolas Batum gave Portland a 107-105 lead on a pair of free throws with 7.7 seconds left.
Guard Dwyane Wade drove to the hoop and kicked the ball back to Bosh, who buried a high-arching trey with a pair of Blazers converging on him.
During the timeout, coach Erik Spoelstra talked about Wade scoring on the drive or passing out to Bosh for a game-tying 2-point shot. Bosh overruled his coach.
"He said, 'I'm shooting the 3. DD, get it. I'm slipping out to shoot a 3,'" Wade said.
"In that situation, I wanted to go for the win," Bosh said. "It's just how I felt at the moment, so we changed it to where Dwyane had an opportunity downhill, and if he got double-teamed, I was behind him for the jumper."
Spoelstra didn't mind being overruled.
"Chris was feeling it," he said. "He wanted it. As soon as he said it, I said, 'Yeah, that makes sense.' "It was much better than what I had planned."
Bosh "made his jump shots, especially early," Portland coach Terry Stotts said. "I didn't count on him going 3-for-3 on 3's. But he played a terrific game, and they needed him to."
Guard Wesley Matthews scored 18 of his team-high 23 points in the first half for the Blazers (24-6), who lost for only the third time at home this season. Aldridge added 22 points and seven boards for Portland.
"It's one we gave away," said Matthews, who scored 18 points in the first half and was 9 for 14 from the field, including 4 for 7 on 3-point attempts. "We had it. We had control of it the whole game, but we didn't get it done. We handed them that game."
The Blazers had been nearly unerring in tight games and flawless with late leads this season. They entered the game 14-1 in games decided by 10 points or fewer, 14-0 in games in which they led at halftime and 19-0 when they took a lead into the fourth quarter. Portland led 62-58 at halftime and 88-83 after three quarters Saturday night.
"We've been tops in the league in the last four minutes of close games," Matthews said. "It sucks that we controlled everything that happened. We can't blame anyone but ourselves. It'll be tough to sleep tonight."
Down by four points at the half, Miami seized its first lead since early in the game at 71-69 after forward Rashard Lewis' 3-point shot with 6:19 left in the third quarter. The lead was 75-71 when the Blazers went on a 15-4 tear to go in front 86-79. They took an 88-83 advantage into the final period.
Portland led until Bosh drained one from beyond the arc to tie the score at 96 with four minutes to play. The teams traded baskets before another Bosh 3 pushed Miami on top 101-98 with 1:58 left.
Aldridge sank a pair of free throws to close the gap to 101-90 with 1:44 remaining. Bosh's tip-in made it 103-100 with 1:20 to go, but Aldridge converted a left-handed layup and it was 103-102 with a minute left.
Batum was fouled by Wade on a 3-point attempt, and his three free throws gave Portland a 105-103 lead with 32 seconds to play. Wade then scored on a thunderous dunk to tie it at 105-105 with 26.2 seconds on the clock.
After a timeout, guard Damian Lillard lost the ball on a drive but Batum picked it up and was fouled with 7.7 seconds remaining. He made a pair and Miami called time, trailing 107-105, setting up Bosh's late heroics.
Portland led 62-58 at halftime in a shootout that saw the Heat fire at a .571 clip but still trail at the break. The Blazers shot .454 from the field and .474 (9 for 19) on 3-point attempts. Matthews and Lillard combined for 33 points in the half, making 12 of 17 shots between them, including 8 of 12 from 3-point range. Bosh had 18 points on 8-for-11 shooting for Miami.
Miami sank its first six shots, led by eight points early and was ahead 24-17 with five minutes left in the first quarter. The Blazers, who stayed close by knocking down 4 of 5 3-point shots early, used a 7-0 run to tie it at 24-24. At that point, Portland was 10 for 12 from the field, Miami 10 for 14.
The Blazers took a 34-30 lead into the second quarter and extended it to 43-34 three minutes into the period. At that point, they were shooting .739 (17 for 23) from the field.
Miami crept back to within 57-56, but the Blazers used three free throws in the final nine seconds of the half to go into intermission ahead by four.
NOTES: F LeBron James, who suffered the injury during Miami's 108-103 loss at Sacramento Friday night, warmed up prior to the game but was unable to go. Also sitting out for Miami was F Chris Andersen (back), though coach Erik Spoelstra said the veteran forward is "getting better." ... The loss dropped Portland to 11-1 against Eastern Conference opponents this season. The 11-0 start was a franchise record. ... The Heat's loss at Sacramento -- they led by 17 points in the first quarter and were ahead for most of regulation -- left them glad for the challenge of playing the team with the league's best record tonight. "That's the beauty of the NBA," Spoelstra said pregame. "You have such a bad taste in your mouth after a game like that. It was tough for all of us to sleep. All you want to do is get back out there and compete again. And then to have a game like this -- that's what our guys cherish. Our guys like the big-game feel in tough arenas. (The Moda Center) is a great crowd, great atmosphere on a Saturday night -- there's nothing else we'd rather be doing."