Both sides had opportunities to win the U18 Premier League encounter but it was the young Reds who finally found a breakthrough in the precursor to the first-team showdown between the clubs on Sunday.
Duncan produced the decisive moment for Barry Lewtas’ team with a clinical finish that increased their winning run in domestic football to six games.
Liverpool made a bright start in Kirkby and their committed pressing high up the pitch ruffled City as they attempted to move the ball out from the back.
The first sight of goal was forged by the visitors 11 minutes in, however.
Jayden Braaf’s pace took him past Jack Walls to the byline on the left and his pull-back teed up Cole Palmer for a snap-shot that flew wide of the near post.
Paul Glatzel scared City when he found space inside the box but, under pressure from four defenders, the Liverpool No.9 could not sweep in a finish.
Braaf again caused concern shortly before the half-hour mark by speeding in from the left flank but his powerful shot towards the opposite corner was misjudged.
City should have taken the lead seconds later.
Keyendrah Simmonds snuck in behind to collect a pass through and was thwarted by the outrushing Vitezslav Jaros, who – along with Rhys Williams – stopped Braaf’s follow-up and Palmer’s subsequent rebound.
The unmarked Taylor Harwood-Bellis then squandered a brilliant headed chance from a left-wing corner, directing his effort well over, and Liverpool were grateful to go into the break with the score goalless.
The ebb and flow continued into the second half and Duncan, facing his former club, might have netted 10 minutes after the restart.
Leighton Clarkson used a short corner routine to send a troublesome cross towards the back post; Williams put the goalkeeper under pressure but Duncan could only fire the loose ball over the bar.
Elijah Dixon-Bonner was not too far away with a shot across goal from right to left and only a last-ditch intervention by Henri Ogunby denied Duncan a tap-in when Glatzel squared into the middle.
Second-half substitute Matteo Ritaccio saw a looping strike bounce off the upright as the minutes ticked away and it appeared no goal would materialise.
There was still time for Duncan, though.
Abdi Sharif, shortly after entering the action from the bench, showed bravery to win the ball back high up the pitch and when it broke to Liverpool’s No.10, he lashed a shot through the goalkeeper’s legs to snatch victory.
Liverpool U18s: Jaros, Walls (Hoever, 74), Larouci, R. Williams, Clayton, Clarkson (Sharif, 87), Dixon-Bonner, Cain (Ritaccio, 55), Glatzel, Duncan, Longstaff.
Unused substitutes: O’Rourke, B. Williams.