Mason Plumlee had 15 points and a career-high 17 rebounds, and No. 8 Duke held on to beat St. John's 83-76 on Saturday.
Ryan Kelly scored 16 points and Andre Dawkins added 14 for the Blue Devils (18-3), who led by 22 with 17 minutes left but shot just 30 percent in the second half while the Red Storm rallied.
Moe Harkless had 30 points and 13 rebounds for St. John's (9-12). He and D'Angelo Harrison each hit 3-pointers in the final minute to make things tense.
Harrison's 3 with 20.7 seconds left pulled the Red Storm to 79-75. Ryan Kelly followed with two free throws to put Duke up by six.
After Phil Greene missed in the lane for the Red Storm, God'sgift Achiuwa's free throw with 10.2 seconds remaining pulled them to 81-76. Tyler Thornton iced it for Duke with two free throws with 8.3 seconds left.
Austin Rivers finished with 12 points for the Blue Devils, who claimed their 94th straight nonconference victory at Cameron Indoor Stadium. That kept alive one impressive home-court winning streak in the first game since another streak was snapped emphatically. The Blue Devils had won 45 in a row at home before Florida State stunned them a week ago on a last-second 3-pointer.
Harkless was 13 of 21 shooting while Harrison finished with 21 points and three 3-pointers for St. John's, the last non-Atlantic Coast Conference team to win at Cameron -- in 2000.
The Red Storm thumped Duke 93-78 last year in Madison Square Garden. None of the current players saw the court in that game, and the coach who orchestrated that beating -- Steve Lavin -- has been out for much of the season while recovering from prostate cancer surgery.
The new-look team was coming off one of its biggest victories without him, a 16-point win over West Virginia in which they had 50 points in the paint -- and after a rocky start, they nearly rallied for an even bigger one.
One of the Red Storm's easiest baskets of the day wound up being the impetus for the run that seemed to put Duke in control. An incensed Mike Krzyzewski called a time out after Harkless slipped free for a dunk down the lane to make it 23-20 midway through the first half.
The Blue Devils responded with a 20-3 run keyed by Dawkins that put them up by 20. The junior guard hit three 3-pointers over the Red Storm's 1-2-2 zone defense, both starting and ending the run by connecting from long range. His third 3 made it 43-23 with 1:45 before the break.
Duke led 54-32 on Rivers' free throw with 17:09 left before St. John's got hot from outside, hitting three 3-pointers in roughly 3 minutes -- two by Harrison -- to chip away at the Blue Devils' big lead.