The Trail Blazers won their third game in a row Tuesday night, overcoming a career-high 58 points by Oklahoma City's Russell Westbrook in a 126-121 road win.
Westbrook was 21 of 39 from the field, including 3 of 9 on 3-pointers. But he missed several jumpers down the stretch when the Thunder needed to keep pace with Portland and couldn't.
Westbrook also made 13 of 16 free throws and had a game-high nine assists, but managed only a season-low three rebounds.
The Blazers improved to 27-35, while OKC fell to 35-29.
Denver remains eighth in the NBA Western Conference at 29-34, now 1 1/2 games ahead of Portland.
Dallas is 27-36 after its 122-111 win at home over the Los Angeles Lakers.
Minnesota is 25-27, Sacramento 25-38 and New Orleans 25-39 in the race for the eighth and final playoff spot in the West.
Blazers guards Damian Lillard (22 points), McCollum (21) and sub Allen Crabbe (23) combined to score 66 points on 23-for-47 shooting from the field.
Lillard had a team-high eight assists.
Noah Vonleh started at small forward and had 11 points in 21 minutes, and Al-Farouq Aminu came off the bench for 12 points in 20 minutes.
Center Jusuf Nurkic, who picked up his fourth foul one minute into the second half, played 24 minutes and had 17 points and a team-leading eight rebounds.
The Blazers led 108-99 with about seven minutes left, but OKC put on a surge to make for a tight finish. Westbrook hot one of two free throws to tie the score 2:09 remaining.
McCollum and Westbrook traded scoring drives. Then Nurkic charged into Taj Gibson on a pick-and-roll for his fifth foul with 1:34 to go.
But Westbrook missed from midrange, and Nurkic scored from the left block after an offensive rebound by Aminu.
Westbrook then missed from 2 and 3 on the same possession, and Crabbe grabbed a defensive rebound with 42.8 seconds remaining.
Nurkic made it a 120-116 lead with 31.7 seconds left, getting a mismatch with Gibson a few feet from the basket and scooping in a shot.
Victor Oladipo hit a 3 off OKC's inbound play from midcourt, slicing the Portland lead to 120-119 with 26.2 remaining.
McCollum was fouled at the 15.2-second mark and sank two free throws.
Westbrook missed a 3, and Nurkic was fouled after snaring the rebound with 9.8 seconds to go. He made two foul shots for a 124-119 edge.
Westbrook got a quick layup, and the Blazers went back to the line with 1.4 seconds remaining. Lillard completed the scoring with two free throws.