DURHAM, N.C. -- Louisville's big lead was all but gone, leaving the 11th-ranked Cardinals clinging to a slim margin while the fans packed into Duke's famously hostile home arena were roaring at ear-ringing levels.
Chris Mack's squad proved they were tough enough to punch back in those critical moments to secure a huge win against a fellow Atlantic Coast Conference heavyweight.
Freshman David Johnson had a season-high 19 points and the Cardinals hung on down the stretch to beat No. 3 Duke 79-73 on Saturday night, winning a key matchup in the league's regular-season title chase.
"We never got rattled," said Malik Williams, who had 12 points and a couple of big late-game plays. "Things got tough for us, they tied the game, we kept playing, kept fighting."
"Fighting" is probably a good word for it, too. It was a physical game with plenty of players bumping each other to the floor and powering into the paint through contact, one that left Duke coach Mike Krzyzewski calling it "the most physical game we've been involved with in years, really."
"The term of freedom of movement was not alive and well tonight," Krzyzewski said, adding: "They played great, I don't want it to take away from them."
The Cardinals -- who improbably blew a 23-point lead in the final 10 minutes of a home loss to Duke last year -- hung on despite finding themselves in a tight finish after leading by 15 in the first half and 10 at halftime.
Leading 71-70, Louisville (15-3, 6-1 ACC) got two free throws from Dwayne Sutton with 3:11 remaining and then got five consecutive defensive stops during the critical game-clinching sequence. That included a missed drive and an airballed 3-pointer from Duke freshman Cassius Stanley, who was otherwise was the best player on the floor for either team on the way to season highs of 24 points and 11 rebounds.
Williams added two free throws with 16 seconds left to make it 75-70 and followed immediately with a transition dunk off a turnover. It was a sequence that all but ensured the Cardinals would claim the only regular-season meeting between the teams, not to mention put themselves in a tie with No. 9 Florida State atop the league standings.
"If you're going to win here, especially with them coming off a loss, you're going to have to figure out a way to be the tougher team for 40 minutes," Mack said.
By those final seconds, the Cardinals had done just that, even allowing Sutton to tell Duke's "Cameron Crazies" to "Go home" as Louisville began its celebration.
The Blue Devils (15-3, 5-2) shot 37% for the game and made only 6 of 25 3-pointers. The struggles included freshman big man Vernon Carey Jr. finishing with just 12 points after sitting a long stretch of the second half with four fouls.
"We got hit first," Stanley said. "But I think we responded very well. But when you get hit first like that, it's a lot to get back."
Louisville: The Cardinals picked the perfect way to close a three-game road swing. They first won at Notre Dame by three, then beat Pittsburgh by five in overtime before going 3-0 with the win at Cameron. They're now tied with No. 6-1 in the ACC, though FSU beat Louisville earlier this season.
Duke: The Blue Devils had been rolling before stumbling at Clemson on Tuesday to end a nine-game winning streak and suffer their first league loss this season. They've now dropped consecutive games for the first time since losing to St. John's and North Carolina in February 2018. One big culprit in this one: Duke finished with 16 turnovers, 10 coming in a mistake-filled first half that staked Louisville to its lead.
The Cardinals won despite Nwora, the league's leading scorer at 20.4 points, finishing with a season-low six points on 3-for-12 shooting.
Johnson, a 6-foot-5 point guard, had 17 points in the first half to surpass his previous season high of 11 points at Pitt. He finished 8 of 12 from the floor with seven assists before leaving late with a banged-up shoulder.
There was an early bit of spice added when Louisville's Darius Perry fell to the floor after a miss and tried to get up with Stanley standing and straddling him. That led to Perry and Stanley getting tangled, prompting Duke's Joey Baker to run over and exchange words with Perry before they were separated. Each received technical fouls.
Louisville: The Cardinals host Georgia Tech on Wednesday.
Duke: The Blue Devils host Miami on Tuesday.
More AP college basketball: https://apnews.com/Collegebasketball and http://www.twitter.com/AP-Top25
Follow Aaron Beard on Twitter at http://www.twitter.com/aaronbeardap
Western Michigan promotes Clayton Bates to head coach as AD says pandemic impacted search
Western Michigan promoted Clayton Bates to be its basketball coach Saturday, with its athletic director saying the coronavirus crisis impacted the school's search.
St John's wing LJ Figueroa declares for NBA draft
St. John's wing LJ Figueroa has declared for the NBA draft.
College basketball's 'greatest of all time' bracket: Elite Eight South and Midwest breakdowns
ESPN.com panelists share their thoughts and opinions on the Elite Eight for the South and Midwest Regions.