The Cavaliers took a 17-point lead at halftime, lost all of that advantage and then relied on Irving down the stretch to win for the 10th time this season. The only teams left in the NBA with fewer than 10 wins are Charlotte and Washington.
Portland, which lost its fourth in a row, took a one-point lead on jumper by Damian Lillard with 2:07 to play.
Irving then put the Cavaliers back in front with a jumper, added a turnaround bank shot and hit two free throws to give Cleveland a 91-88 advantage with 19 seconds left.
Irving made 13-of-24 shots from the field and scored 31 points to lead the Cavaliers. Tristan Thompson added 19 points and 14 rebounds in what was the fourth contest in a five-game Cleveland road trip.
Nicolas Batum produced 23 points for Portland, which got just seven points from its bench.