Edwards also had a 100-yard kickoff return for a touchdown late in the third quarter for the Blue Devils (7-2, 3-2 Atlantic Coast Conference), who went from trailing in a close game to winning in a romp with a stunning flurry of late-game touchdowns.
Brandon Connette put Duke up for good with a 5-yard keeper with 3:31 left for a 24-20 lead. Edwards took care of the rest, returning interceptions 25 yards and 45 yards on consecutive plays to blow the game open.
The Blue Devils are guaranteed of their first winning season since going 8-4 in 1994, while N.C. State (3-6, 0-6) has its worst league record since going 0-6 in 1959.
Neither team looked particularly sharp offensively in this one, combining for six interceptions and eight turnovers. In the end, Edwards' one-man show finally gave the Blue Devils the push they needed.
The Wolfpack, struggling badly in coach Dave Doeren's first year, got a 73-yard punt return for a touchdown from Rashard Smith to take a third-quarter lead then an 80-yard touchdown pass from Brandon Mitchell to Quintin Payton for a 20-17 lead with 6:37 left.
On Payton's touchdown, Edwards had the last chance to bring Payton down, but the receiver broke free around the 10 and ran into the end zone.
Edwards got that one back, following Connette's keeper with a terrific individual effort to tip Mitchell's desperation pass into the air, haul it in and run it back for the 25-yard score that gave Duke a 31-20 lead. And his 45-yard return seconds later after Pete Thomas' interception ensured that the Blue Devils weren't going to let this one get away.
Duke's Jamison Crowder added seven catches for 134 yards, including a 75-yard catch in the opening quarter to set up a 4-yard touchdown keeper by Anthony Boone.
When it was over, Duke's players jogged to the student section of Wallace Wade Stadium to celebrate while the Wolfpack walked dejectedly back to the locker room after a fifth-straight loss.
Mitchell threw for 148 yards on 7-for-18 passing with two interceptions for N.C. State, while Shadrach Thornton ran for 103 yards.