J.R. Smith added 18 points for the Cavaliers, who lost to the Thunder 148-124 on Jan. 20 with a very different roster.
Paul George scored 25 points and Carmelo Anthony 24 for the Thunder. Steven Adams added 22 points and 17 rebounds, and Russell Westbrook scored 21 points. Westbrook and Anthony had missed the past two games with sprained ankles.
James scored 14 points in the first five minutes of the third quarter, including two 3-pointers, to give Cleveland a 78-68 lead. He was 6 for 6 from the field during that stretch. The Thunder responded with an 8-0 run to get back into the game. Cleveland took a 91-87 edge into the fourth quarter.
The Cavaliers took control in the fourth, and a layup by James after driving on George pushed the Cavaliers ahead 115-106 with 49 seconds to play.
The Thunder trimmed their deficit to five in the final minute and could have come closer, but Alex Abrines missed a 3-pointer, and Nance got free for a dunk to seal the win for Cleveland.
The Cavaliers led 62-57 at halftime. James had 16 points, four rebounds and five assists, and Smith had 15 points on five 3-pointers. Adams scored 15 points before the break for Oklahoma City.