Bojan Bogdanovic added 18 points for the Nets, who held LeBron James to two baskets in the second half and won for the sixth time in eight games as they chase a playoff berth. They took sole possession of ninth place in the East, a half-game behind Boston for the final spot.
"At this point for us, every game is important. I was glad, man, that we could just come out and get off to a great start and just sustain for 48 minutes," Johnson said. "That was the main thing, to just give ourselves a chance. This was definitely a much-needed victory."
The Cavaliers had won the first three meetings this season, outscoring the Nets by 17 points per game. But Brooklyn turned up its defense in the second half to cool off what had been the NBA's hottest team for more than two months.
"There's no excuses," James said. "That team over there played better than us tonight."
And the Nets did it at home, where they have struggled all season. Brooklyn improved to just 13-20 at Barclays Center while playing without starting forward Thaddeus Young because of a strained left knee that could keep him sidelined through the weekend.
"I think we've been getting better each game for six, seven games now," Lopez said. "We've had some setbacks, but we responded, which is something we absolutely would not have done earlier in the season."
The Cavaliers lost for just the second time in 10 games and seventh in 35 games since Jan. 15. They appeared frustrated with each other at times and with the referees all the time, complaining about almost every call down the stretch as the Nets broke away at the free throw line.
"We did not play well today. I didn't think we played as we normally do," Cavs coach David Blatt said. "Really hard to sit here and point out one thing. There was a lot of things that we just didn't do well."
It was 79-all after three before the Nets finally opened a bit of a cushion at 98-91 after four straight free throws by Lopez. Irving made two for Cleveland, but Johnson nailed a 3-pointer and Jarrett Jack hit two more from the line to make it 103-93 with 2:25 left, the first double-digit lead for either team.
Brooklyn led 57-56 after a well-played first half in which each team shot better than 50 percent. James had 16 points on 6-of-8 shooting at the break.
Cavaliers: Cleveland finished just 8-of-30 (27 percent) from 3-point range. The Cavs had made 10 or more 3-pointers in nine straight road games. ... The Cavs had won four straight meetings dating to last season.
Nets: Veteran forward Earl Clark, signed to a 10-day contract earlier Friday, made his Nets debut in the third quarter and scored seven points in 12 minutes. Asked before the game what Clark needed to do to get minutes, coach Lionel Hollins responded: "I need to put him in the game. 'Earl, go in the game.' That's how he gets minutes. It's not rocket science out there." ... Official scorer Herb Turetzky worked his 1,300th consecutive game, a streak that began in the second round of the 1984 playoffs. He has scored 1,240 games in the regular season and 60 in the postseason.
EVALUATING THE EFFORT
James, on the Cavs' effort: "It was spotty. I know at times we were flying around and at times we were kind of in a trance. One thing we can do is try to control how hard play and how much we communicate, and I don't think we did that to our capabilities tonight."
Cavaliers: Host Philadelphia on Sunday.
Nets: Host the Los Angeles Lakers on Sunday.
Williamson leads New Orleans into matchup with San Antonio
San Antonio Spurs (29-29, ninth in the Western Conference) vs. New Orleans Pelicans (26-33, 11th in the Western Conference)
Eastern Conference leader Philadelphia and Milwaukee meet
Philadelphia 76ers (39-20, first in the Eastern Conference) vs. Milwaukee Bucks (36-22, third in the Eastern Conference)
Detroit plays Indiana on 5-game road slide
Detroit Pistons (18-42, 15th in the Eastern Conference) vs. Indiana Pacers (27-31, ninth in the Eastern Conference)