Willey took two for 55 before hitting an unbeaten 26, with his six finishing the contest to earn a narrow win for the home side.
Ben Duckett had earlier played brilliantly for the Steelbacks, smashing a superb 121 from just 113 balls.
Alex Wakely (71) and Steven Crook (46no) also provided impressive contributions for their team as they reached 310 for seven.
But it wasn’t to be enough as Adam Lyth’s hurricane hundred from just 60 balls put the Vikings in control.
And after Lyth went for a fantastic 125, Gary Ballance hit a valuable 80 and Willey kept his nerve to make sure of the triumph.
Put in to bat on a greenish pitch and soft outfield, the Steelbacks had batted with positive intent from the outset of their innings.
Duckett’s maiden century in List A cricket - his previous best score was achieved only last week when he struck 98 against Lancashire at Northampton - contained cleanly timed strokes of the highest quality.
He was joined by Wakely after Steelbacks’ openers Josh Cobb and Adam Rossington had gone with 35 scored, and the pair brought momentum to the innings with a 166 stand in 27 overs.
It was Northants’ highest third-wicket stand against Yorkshire in List A matches, overtaking the 131 by Rob Bailey and Allan Lamb at Headingley in 1995.
Whereas Duckett was virtually faultless, Wakely had two escapes, first on three when Liam Plunkett failed to hold on to a sharp return chance low to his right and then on 38 against Tim Bresnan when Ballance got underneath the ball at deep square leg but the catch dropped out of his hands.
Neither batsman wasted scoring opportunities as the Steelbacks cruised into three figures in the 25th over and Duckett hurried to his third consecutive one-day half-century from 61 balls.
Their century stand arrived in 18.5 overs, the second 50 taking them only 32 balls, and Wakely celebrated by smacking Adil Rashid through the legside for six to register his 50 from 60 deliveries.
Yorkshire were forced to bring Lyth into the attack with his off-spin, and it was he who made the breakthrough.
Wakely, in two minds over what stroke to play, gave a gentle return catch and was out for 71 from 79 balls.
Rob Keogh fell to Plunkett without scoring but Duckett swept Rashid for two to complete a run-a-ball century.
And he added a couple further boundaries before skying the leg-spinner to Jack Leaning just inside the mid-wicket rope.
Steelbacks were 246 for five in the 43rd over and they remained in control as Rob Newton hit 26 from 15 balls with a four and two sixes and Crook went in unbeaten on 46 from 41 deliveries.
But Lyth got the Vikings off to a flyer, totally dominating an opening stand of 106 in 12 overs with his captain, Alex Lees.
Lees had contributed 20 when he played Crook to square leg, where Ben Sanderson took the catch after not holding it cleanly at the first attempt.
New Zealand captain, Kane Williamson, in his first innings of the season for Yorkshire, played Richard Gleeson into his stumps for 10, and after Lyth had gone, Leaning was caught and bowled by Cobb without scoring.
Rashid then drove Graeme White gently to mid-on and the Steelbacks had hope, but Ballance and Bresnan steadied Yorkshire with a 58-run stand.
It closed when Bresnan became White’s third victim, caught on the cover boundary for 38.
But Ballance made his way to a nicely-judged 50 off 62 balls and Willey soon made an impact against his old club with a couple of big sixes.
However, as Yorkshire were approaching the winning line, Muhammad Azharullah shook them by bowling Ballance and Plunkett in the space of three balls to leave them on 303 for eight in the 47th over.
But Willey kept his nerve as he blasted Crook for six to win the game with 15 balls remaining.