Jabari Parker scored 23 points and No. 8 Duke held on to beat Maryland 69-67 on Saturday night.
Rodney Hood and Rasheed Sulaimon added 11 points each for the Blue Devils (20-5, 9-3 Atlantic Coast Conference). They started a run of four games in eight nights by giving the Terrapins a hard-to-swallow loss in their last scheduled visit to Cameron Indoor Stadium.
The ACC's top 3-point shooting team was just 5 of 24 from long range and shot 23 percent in the second half but found a way to reach the 20-win mark for the 18th straight year.
Jake Layman scored 18 points for Maryland (14-12, 6-7) and Dez Wells had all 17 of his points in the second half.
Charles Mitchell finished with 12 for the Terrapins, but missed two hook shots in the final 10 seconds that would have given them the lead.
Parker gave Duke the lead for good when his one-handed dunk over Jonathan Graham made it 68-67 with about 1:15 remaining.
Wells missed a jumper over Hood with about 50 seconds left. Duke milked the shot clock before Amile Jefferson missed a jumper that failed to draw iron, giving the Terrapins the ball.
The teams traded timeouts with 18.8 seconds left before Maryland worked the ball inside to Mitchell. He had one hook shot blocked by Parker with about 7 seconds left, and another bounced twice on the rim but would not fall through.
Jefferson grabbed the rebound, was fouled with 1.1 seconds left and hit a free throw to end the scoring.
Wells couldn't get off an 80-foot heave before the buzzer, sealing Duke's 30th straight victory at Cameron - tying Stephen F. Austin for the longest active streak in the country.
Duke missed 17 of its first 19 shots in the second half before Jefferson banked one in to tie it at 54 with 6½ minutes left. That came about 2 minutes after Wells capped a 12-1 run with a layup that gave the Terrapins their first lead at 54-52, and it was a one-possession game the rest of the way.
The Big Ten-bound Terps got quite an early earful from the Cameron Crazies, who taunted coach Mark Turgeon with their classic "Sweat, Gary, Sweat" chant that had been mothballed since Gary Williams retired three years ago.
But once Maryland started chipping into - and eventually completely erasing - the Duke lead, those jeers stopped.
Jefferson finished with 12 rebounds for the Blue Devils, who have a busy upcoming week because their rivalry game with North Carolina was postponed due to a nasty winter storm.
That game was rescheduled for Feb. 20 - two nights after they visit Georgia Tech, and two nights before they host No. 1 Syracuse.
That they missed 11 of their first 13 attempts from 3-point range could have been attributed to rust for a team that entered hitting 3s at a league-best 42 percent clip.
But they also were outrebounded 43-36 by the Terps and looked ripe for an upset.
They were unable to take advantage of Maryland's drought early in the half, instead matching the Terps missed shot for missed shot. Maryland went 5 minutes between buckets early in the second half.
Duke finished at 33 percent from the field while Maryland shot 41.9 percent.