The Dutch midfielder struck in the eighth minute, emphatically converting a cross from Adam Lallana, as second-place Liverpool trimmed Chelsea’s advantage back to six points.
It was a fourth consecutive league win for Jurgen Klopp’s side, who look best placed to hunt Chelsea down in the season’s second half, particularly in the absence of European distractions.
They finish the calendar year with 43 points – the most they have ever amassed at the halfway point of a Premier League campaign.
Despite a marked second-half improvement at Anfield, City manager Guardiola must return to the drawing board, having seen his team’s three-game winning run come to an end.
City have now lost four times this season, having also been beaten by Tottenham Hotspur, Chelsea and Leicester City, and will cede fourth place if Arsenal beat Crystal Palace on New Year’s Day.
City’s supporters, who were joined in the away end by injured captain Vincent Kompany, have not seen their team win at Liverpool since May 2003.
Klopp beefed up his midfield by bringing in Emre Can in place of Divock Origi and the move had the beneficial side-effect of freeing Wijnaldum to get forward, as City found to their cost.
The away side had started reasonably well, Aleksandar Kolarov thumping a free-kick into the defensive wall, but a loose pass from the Serbian in the eighth minute proved fatal.
Liverpool broke at break-neck speed, Roberto Firmino brilliantly switching the play to Lallana, whose feathery left-foot cross was magnificently headed home by the leaping Wijnaldum.