In the end, the Trail Blazers’ 106-103 victory over Toronto on Saturday didn’t come down to flashy plays by their two All-Stars, or a dramatic game-winning shot.

This one came down to the team’s heart-and-soul, Wesley Matthews bearing down for two big defensive plays against the Raptors’ newly-minted All-Star. Matthews twice stopped DeMar DeRozan in the final 8.2 seconds, preserving a win that ended a two-game slide and kept Portland (34-13) from losing three in a row for the first time all season.

“After losing a couple, it’s a win we needed to get,” Blazers coach Terry Stotts said.

For Matthews, the defense on DeRozan, who had 36 points and 12 assists, made up for what could have been a costly mistake. After the Blazers controlled the first half, leading by as many as 19 points, Toronto came roaring back in the second, with DeRozan getting 30 points and 10 assists. The Raptors (25-22), who have the third-best record in the Eastern Conference, cut deeply into Portland’s lead and shocked the sellout 19,996 by taking the lead for the first time with 25.4 second left on two free throws by DeRozan.

DeRozan got to the line after goading Matthews into an error, using a shot fake to get Matthews to jump, allowing DeRozan to draw a foul. It appeared to come on a three-point attempt, and although a video replay showed DeRozan’s foot was on the three-point line, he calmly made two free throws, and Toronto was up 103-102.

“That’s unlike me to be undisciplined and jump at that, but he had it going, so I felt like if it was going to leave his hands, it was going to go in,” Matthews said.

Stotts called timeout, and Lillard got the ball but was fouled by Kyle Lowry. The Blazers went back to the exact same play, and Lillard got past Lowry, then got a high shot attempt up over the outstretched arms of Chuck Hayes and banked in a runner to give the Blazers a 104-103 lead with 11.8 seconds left

“I came up off a down screen and we went right into a mid pick-and-roll,” Lillard said. “My first thought was to just try to turn the corner and attack as fast as I could. I was able to get a pretty good look, make the floater.”

Then it was Matthews’ turn. DeRozan got the ball, but Matthews stuck to him and got hold of the ball, resulting in a jump-ball call. DeRozan, an athletic 6-foot-7 guard who has twice competed in the All-Star Game dunk contest, won the tip, forcing Matthews to bear down again.

This time, Matthews forced DeRozan to lose the ball, which went to LaMarcus Aldridge, who got credit for a steal. Nicolas Batum then made two free throws with 0.1 seconds left for the final margin.