Holding a 16-point lead with 7:41 remaining, Portland suddenly had to mount a rally of its own, hitting four free throws during the final 11.8 seconds to pull out a 106-103 win Saturday night.
LaMarcus Aldridge had 27 points and 15 rebounds and Damian Lillard hit a go-ahead free throw with 11.8 seconds left to help end the Blazers' two-game losing streak.
Lillard and Wesley Matthews scored 21 points apiece for Portland and Nicolas Batum added 18.
DeRozan was a one-man wrecking crew down the stretch, scoring 30 of his 36 points during the second half. DeRozan, who also had 12 assists, scored 16 points during the third quarter and 14 in the fourth.
The fourth-year All-Star guard had a hand in 22 of Toronto's 26 second-half baskets, with 12 field goals and 10 assists.
Kyle Lowry added 23 points for Toronto.
The dramatic win helped Portland end its worst offensive slump of the season. The Blazers, the NBA's top scoring team at 108.4 points, came into Saturday having scored season lows of 81 and 88 points in their past two games.
Aldridge said there wasn't a sense of relief despite the hair-raising finish.
"We know that we had control from the beginning so it was just about staying solid the whole game and trying to close it out. We did that," Aldridge said.
Matthews said after losing back-to-back games, to Golden State and Memphis, "this was a must-win game, and that was the sense of urgency we took into shootaround and the urgency we start the game with."
DeRozan and the Raptors nearly spoiled Portland's breakout game. Trailing 57-40 at halftime and by as many as 19 points during the second half, Toronto made a prolonged charge at Portland.
During the third quarter, the Raptors got as close as six points before Portland hit four 3-pointers during a four-minute stretch to regain a double-digit lead. Then DeRozan led Toronto on a fourth-quarter rally, when a 16-2 run over a five-minute stretch gave the Raptors a 103-102 lead on two free throws by DeRozan.
"He was voted an All-Star for a reason. He's capable of getting hot and carrying a team," Portland coach Terry Stotts said.
Despite the near-comeback, Toronto coach Dwane Casey said the Raptors were sunk from a poor first half.
"It wasn't us. We picked it up in the second half, but you can't spot a good team like Portland that many points and expect to survive," Casey said.
With Portland trailing for the first time in the game, Lillard went on the offensive, drawing a foul while driving to the basket with 11.8 seconds left. Lillard hit both free throws to give the Blazers the lead, then Portland's defence stepped up when Matthews forced DeRozan into a turnover.
Matthews said all he could think about during the final few minutes was making a play to stop DeRozan.
"We blew a 20-point lead, and we did a similar thing when we played out there in Toronto. DeRozan made tough plays, the rest of the team make tough plays. We just got the timely stop we needed," Matthews said.
Batum hit two free throws with 0.1 seconds left to seal the win.
At the game's outset, the Blazers got their sluggish offence going by turning up their defence, holding Toronto to 35 per cent shooting (14 of 40) during the first half.
Aldridge kick-started Portland's performance with 12 points and 11 rebounds during the first quarter to stake Portland to a 31-19 lead.
Helped by two Portland technical fouls, Toronto went on a 10-2 run midway through the second quarter to cut the deficit to 43-34. But Lillard went to work, punctuating a 12-point second quarter with a driving windmill dunk to put the Blazers in front 50-36.
NOTES: Toronto reserve guard Greivis Vasquez missed Saturday's game with flu-like symptoms. Vasquez, acquired from Sacramento in a Dec. 9 trade, is averaging eight points and 4.5 rebounds a game for the Raptors. . Aldridge's 11 first-quarter rebounds is one short of the franchise record for a quarter, held by three different players. . Portland is one of five NBA teams not to lose three consecutive games this season. . The Blazers won their sixth consecutive game in Portland over Toronto. The Raptors last won in Portland in 2006.