Trailing 104-96 with 3:45 remaining, Memphis outscored Portland 13-1 down the stretch to pull out the win. O.J. Mayo, who scored 27 points to share the team high with Zach Randolph, hit a free throw with 21 seconds left to give the Grizzlies the lead for good at 105-104.
Memphis (17-16) won its fourth consecutive game and seventh of its past eight to move above .500.
"There's a lot of adversities you have to go through to be a winning team," Memphis coach Lionel Hollins said. "It's not just easy 20-point wins. You've got to come, play, battle and compete and they rose up in the last couple of minutes and got that win."
Portland, which used only seven players, looked to be on its way to a comeback win of its own. The Blazers (22-15) trailed 87-79 heading into the fourth quarter, but outscored Memphis 25-9 during the first eight minutes to take a 104-96 lead.
The Grizzlies scrapped to get back into the game. Randolph scored on a pair of tip-in rebound baskets to pull Memphis to within 104-102. Then Mayo took over, scoring a layup with 30 seconds remaining to tie the game.
Portland's Brandon Roy, who led the Blazers with 27 points, then had the ball near midcourt with Mayo defending him. At one point, Mayo reached in and tipped the ball loose from Roy. In scrambling for the ball, Roy fouled Mayo, who hit the first of two free throws with 21 seconds remaining to give Memphis the lead.
"I got lucky to get a loose ball foul on him. It was a good gamble that worked out," Mayo said.
Hollins, who said the foul call on Roy "could have gone either way," admitted he had mixed feelings about the play.
"I can't say 'don't do that', but if (Mayo) would have fouled him I would have been upset," Hollins said. "But players have to play. I can't control every decision they make."
Memphis, which is averaging 112.9 points during its past eight games, had another big offensive night. The Grizzlies shot nearly 52 percent from the field, making 41 of 79 shots, and made 6 of 12 from 3-point range. Randolph hit 10 of 16 shots and pulled down a team-high 14 rebounds. Marc Gasol and Rudy Gay had 18 points each for Memphis.
Portland, which lost its second consecutive game, also shot well from the floor, hitting nearly 53 percent (41 of 78). The Blazers had stretches where they were in control, leading by nine points midway through the second quarter and the eight-point lead with 3:45 left.
Even with Gay's heroics, Portland had a chance to tie the game at 106-106 with four seconds remaining, but Jerryd Bayless missed the first of two free throws.
"We had a lot of chances to win that game," said Roy, who hit 9 of 18 shots and also had nine assists. "We had two or three offensive boards on one play and usually you win games when you get those plays. We just didn't get it tonight."
Each of Portland's starters scored in double figures. Martell Webster, who hit five 3-pointers, had 21 points, while Andre Miller had 16 points and 10 rebounds.
Notes: Memphis is the only team in the NBA with two players averaging more than 20 points a game in Gay (20.8) and Randolph (20.2). ... LaMarcus Aldridge returned to Portland's lineup after missing the past two games with a left ankle sprain. He scored 11 points. ... Memphis was 5-10 and losers of eight consecutive games when it beat Portland 106-96 on Nov. 25. Since that game, the Grizzlies are 12-6. Memphis is averaging 112.9 points during its past eight games. ... Gasol is second in the NBA in field-goal percentage at .620.