The Vikings set a target of 380 and won - by 16 runs with an over remaining - for the fourth time in seven matches to move third in the North Group, although the hosts gave them a scare.
Liam Livingstone and Keaton Jennings hit 79 and 69 as Lancashire reached the 25-over mark at 215 for two before falling to 363 all out, including 21 needed off the last two overs with two wickets left.
If Yorkshire beat Northants at Emerald Headingley on Thursday, when Joe Root is available, they would secure qualification later this month.
Yorkshire’s 379 for seven after electing to bat was their highest ever List A score against county opposition.
It was built around a 235 second-wicket partnership between left-handers Lyth and Willey.
Lyth recorded a career best 144 off 132 balls and Willey 131 off 95. The pair united for 33 overs to advance from 12 for one. Willey later finished with four for 59 from 9.5 overs.
Their partnership was Yorkshire’s highest for the second wicket in List A cricket and the highest for any partnership by either side in Roses history. It was also Yorkshire’s third highest partnership ever.
Lancashire’s catching and ground fielding cost them.
They dropped a handful of catches, including Lyth on 117, 127 and 136.
Willey took advantage of a short boundary towards the Stretford side of the ground and hit seven of nine sixes in the innings, although he was also strong down the ground.
Gary Ballance hit the other two on the way to a late and quick-fire 38.
Lancashire lost Alex Davies early in their chase before Jennings and Livingstone put the visitors under pressure.
Livingstone hit his first ball off wicket-taker Matthew Fisher for six over third-man and later pulled Liam Plunkett for a six and two fours in his first over on the way to a 33-ball fifty.
Jennings followed him to 50 before both holed out to Plunkett and Steve Patterson as the score fell to 218 for three in the 26th over.
South African Dane Vilas kept home hopes high with 47, but he was the second of three quick wickets as the score slipped to 238 for five in the 31st, with Adil Rashid getting him caught at short fine-leg on the sweep and Rob Jones stumped.
Rashid later had Josh Bohannon caught and bowled in his last over on the way to figures of three for 64 from 10 overs, with Lancashire slipping to 293 for seven in the 41st.
Willey had Jordan Clark caught at mid-off in the 43rd over (302 for eight) but Tom Bailey and Stephen Parry shared 59 to heighten tensions before Willey bowled the former for 33 at the start of the penultimate and then trapped Parry lbw.