The Nets trailed by as many as 16 points, but rallied to win for the second time in eight games. They outscored the Thunder 29-16 in the fourth quarter.
Serge Ibaka tied the game by hitting a layup with six seconds to go. After a time out, Johnson took the ball with Ibaka guarding him and worked free for a shot with a behind-the-back dribble.
Johnson took his shot from the top of the key for the last of his nine points.
The Thunder lost their second straight, having blown a 16-point lead in both of the setbacks. Portland rallied from the big deficit to defeat Oklahoma City on New Year's Eve.
Oklahoma City won its first 13 home games this year, but has now lost three of its last four appearances on its own court. Kevin Durant had 24 points for the Thunder.
Ohio bar shooting arrested, charged with murder
McPhee, Cokas 'working on their marriage' after affair