The game at times looked more like hockey than basketball, with bodies checked to the floor, and personal fouls seeming, well, downright personal.
In the end, it was an undermanned Utah Jazz team showing it had as much grit as the Denver Nuggets, building a 14-point, third-quarter lead then holding on in a 114-111 nailbiter Monday night to square the first-round NBA playoff series at 1-all.
"Sometimes you get tired of taking a butt-kicking," Utah coach Jerry Sloan said, a reference to Nuggets star forward Carmelo Anthony scoring a career playoff-high 42 in Saturday night's opener.
"You have to step up and fight back a little bit."
And fight they did, despite being down to a center - Kyrylo Fesenko - with as many Ys in his name as in his game.
The series now shifts to Salt Lake City for Game 3 on Friday, where the Jazz were 32-9 at home during the regular season.
After blowing the Northwest Division title by losing their regular season finale, the Jazz regained home-court advantage with the improbable win before a raucous crowd at the Pepsi Center.
"It was a big win for us, what with everything that's been going on injury-wise," said Jazz guard Deron Williams, who had 23 first-half points and finished with 33 on the strength of 16 of 18 free throws.
"Nobody gave us a shot. But we still have a great team. We really proved we can battle."
For a Nuggets team that went all the way to the Western Conference finals last year, how they unraveled down the stretch Monday was a shock to the system.
After erasing the 14-point deficit, then regaining the lead, they made critical errors during crunch time.
With the Nuggets up by one, Anthony lost the ball driving into the lane with 1 minute, 43 seconds left.
Then, the Nuggets defense allowed Kyle Korver to set up for a three-pointer, which he promptly sank to give Utah the lead for good at 108-106.
After two turnovers, Chauncey Billups, Mr. Big Shot himself and a career 89.2 percent free throw shooter, was fouled, but made only one of two. On Denver's next possession, he was called for an offensive foul.
It only got worse from there for the Nuggets when Anthony fouled out of a playoff game for the first time while trying to guard C.J. Miles as he brought the ball up the court with 25.4 seconds left.
It was little consolation that replays showed Miles stepped out of bounds before the foul.
The officials, who whistled the Nuggets for 37 personal fouls, didn't see it.
And when the Jazz sank four free throws down the stretch, the Nuggets needed a long-distance three from Billups with 2.9 seconds to play to force overtime, but he didn't make it.
Unlike the matchup of teams that finished with identical 53-29 regular-season records, it wasn't close.
Afterward, Anthony sat lost in his thoughts at his locker.
"It's going to wear on me tonight. But tomorrow is a different story," said Anthony, who was just 9 of 25 from the field, but 14 of 15 from the line for a team-leading 32 points. "Now it's time to make our adjustments."
Monday it was the Jazz switching things up in an effort to slow down Anthony.
"They tried to get under his skin a little bit," Williams said of Miles and Wesley Matthews getting physical with Anthony as soon as he crossed midcourt.
"C.J. did a great job on Melo," Utah forward Carlos Boozer said. "We had guys who stepped up and that is how we are going to win games in this series, have everyone pull their weight."
Maybe so, but Monday it was Williams and Boozer carrying the load offensively - they combined for 53 of Utah's 114 points, including 39 in the first half. The Jazz as a team shot .677 (21 of 31) in the first half - a new team playoff record.
"They got two great players that won the game for them," Billups said of Williams and Boozer. "D Will and Booze had it their way. We weren't aggressive enough. The traps weren't that aggressive. If you give those guys daylight, that is what happen."
Now the Nuggets have to refocus and see if they can regain the edge they had.
"Their team is a wounded team, and a wounded animal is most dangerous kind," Billups said.