The hosts produced the only goal of the game midway through the first half, from Netherlands youth international Jayden Braaf, and after twice hitting the woodwork the Reds could not find a leveller.
U23s boss Neil Critchley named a fairly young team for the contest with several of his regulars included in the first-team squad for the FA Cup tie against Everton at Anfield.
It was the home side who worked a goalkeeper first when Ben Knight’s low curler saw Ben Winterbottom dive low to his right to turn the ball round the post with just three minutes on the clock.
Liverpool responded quickly as Jack Bearne released captain Tony Gallacher down the right – his cross was met by Tom Hill’s clever flick at the near post that was deflected just wide for a corner.
And it was Bearne who came within a whisker of opening the scoring with 13 minutes on the clock. Picking up a loose ball and spotting goalkeeper Gavin Bazunu off his line, he rattled the crossbar with a terrific strike from more than 25 yards.
Knight tried his luck for City with a couple of efforts cutting in off the right side while Bearne sent a flashing volley wide of the post with his left foot as both teams sought the breakthrough.
It was the home side who got it, however, Braaf holding off his Dutch countryman Sepp van den Berg to collect a through ball and fire low past Winterbottom on 25 minutes.
Braaf threatened again seconds later but this time Van den Berg was in just the right place to turn away his goalbound shot.
The woodwork came to City’s rescue again shortly before the break. Elijah Dixon-Bonner’s superb volley from the left edge of the box beat Bazunu but somehow came off the inside of the post and away to safety.
And the Reds then missed a great chance to level when Jake Cain intercepted a pass back from Adrian Bernabe and fed Bearne but, with several Reds waiting to finish, his cross was cut out at the near post.
Liverpool created the first clear chance of the second period on the hour mark thanks to a superb crossfield ball from Morgan Boyes. Gallacher collected it in stride and was in on goal but a last-ditch tackle denied him as he looked set to equalise.
With 20 minutes left, the Reds survived a goalmouth scramble after Bernabe’s cross into the box wasn’t cleared, and within five minutes Braaf had rattled the post after twisting and turning impressively in the box.
The City goalscorer should have sealed it 10 minutes from time when he rounded Winterbottom only to somehow blast a shot high and wide with just a defender on the line to beat.
Critchley gave a late debut to Joe Hardy, a striker newly arrived from Brentford, as they kept going in search of an equaliser.
And Hardy almost enjoyed a dream start against the club where he played his youth football as he collected a stunning pass from Bearne, only for ‘keeper Bazunu to palm his clipped effort over the bar in the last few minutes.
Winterbottom was still needed to save well from City substitute Lewis Fiorini and the hosts held on to claim all three points.
Liverpool U23s: Winterbottom, Gallacher, Norris, Van den Berg, Boyes, Clarkson, Christie-Davies, Dixon-Bonner (Hardy, 80), Hill, Cain, Bearne.
Unused substitutes: Atherton, Walls, Varesanovic.