DURHAM, N.C. (AP) - Bryce Perkins did a little bit of everything to lead Virginia to another upset victory.
Perkins passed for 189 yards and a touchdown, and he rushed for 61 yards and two scores to help the Cavaliers beat Duke 28-14 on Saturday afternoon.
Virginia (5-2, 3-1 Atlantic Coast Conference) backed up its 16-13 win over Miami, its first against a ranked opponent since 2014, with its fourth consecutive victory over Duke. The Cavaliers won as underdogs for the second week in a row.
"I'm obviously really excited and proud of our team," Virginia coach Bronco Mendenhall said. "Coming off of the Miami win last week, that presented a significant challenge. ... Our team showed the maturity and resiliency to come on the road and start fast."
Daniel Jones passed for 240 yards and a touchdown for the Blue Devils (5-2, 1-2).
Duke cut Virginia's lead to 20-14 early in the fourth quarter when tight end Davis Koppenhaver caught a 22-yard touchdown pass from wide receiver T.J. Rahming on a trick play.
But Perkins found Evan Butts for a 16-yard touchdown with 3:58 remaining to put the Cavaliers back in control.
Perkins eluded unblocked blitzing safety Marquis Waters and scrambled to his left before throwing to Butts in the end zone.
"There's at least two or three plays every game where you're like, 'How is this real life?' " Butts said. "It's just absurd, his talent level. Having him here on this team is a blessing for everyone."
Chris Taylor had six receptions for 97 yards and a touchdown for the Blue Devils.
The Cavaliers led 14-0 at halftime, but their cushion should have been larger. They failed to score on drives that reached the Duke 29-, 16- and 34-yard lines.
Virginia: The Cavaliers were rock solid, committing no turnovers and making few mistakes overall. They remained unbeaten in Coastal Division play and have an opportunity to build more momentum. Virginia's next three games are at home against North Carolina, Pittsburgh and Liberty. "We're not satisfied with this," Perkins said.
Duke: The Blue Devils weren't themselves from the start, and they couldn't quite catch up. Playing in a steady rain that helped keep the home crowd sparse, they stumbled through a first half filled with dropped passes and uncharacteristic penalties. Duke had five penalties for 52 yards before halftime, nearly double their ACC-leading averages for an entire game.
“The biggest thing was we didn’t show up from the opening kickoff until about midway through the second quarter,” Duke linebacker Joe Giles-Harris said. "You can’t do that in ACC games.
Jones threw a season-high two interceptions, continuing his career-long struggles against Virginia. In three games and 136 pass attempts against the Cavaliers, he has thrown nine interceptions (one every 15.1 attempts). In 27 games and 888 pass attempts against all other opponents, he has thrown 15 interceptions (one every 59.2 attempts).
Trailing 20-14 midway through the fourth quarter, Duke had the ball at its own 23. The Cavaliers tackled Jones for a loss on three consecutive plays, two of which were sacks, to force a punt that set up the game-sealing touchdown. Chris Peace had one of the sacks and shared the other with Charles Snowden. "That was probably the most important drive of the game to come up with a response after they had the momentum," Peace said.
Duke lost starting left tackle Jaylen Miller late in the first quarter to a season-ending injury to his right lower leg. Coach David Cutcliffe said Miller will have surgery. The Blue Devils played much of the second half without starting linebacker Ben Humphreys, who injured his left leg in the second quarter and returned only briefly.
Virginia played the second half without starting running back Jordan Ellis, who injured his left ankle late in the first half.
Virginia: The Cavaliers host North Carolina on Oct. 27.
Duke: The Blue Devils play at Pittsburgh on Oct. 27.