Liverpool returned to the top of the Premier League but were made to work hard for victory at relegation-threatened Cardiff City.
Jurgen Klopp’s side had to be patient as they dominated a dogged Cardiff side, who had chances of their own to cause an upset.
Liverpool made the breakthrough in spectacular fashion, as Georginio Wijnaldum met Trent Alexander-Arnold’s low corner with a thunderous first-time effort which threatened to break the net.
The wild celebrations spoke of the visitors’ relief, and they had to negotiate some nervy moments, most notably a staggering miss by Cardiff captain Sean Morrison, who miscued a header with the goal at his mercy.
Things then got worse for Morrison, who conceded a penalty after grappling with Mohamed Salah, and substitute James Milner confidently converted the spot-kick to seal victory for the visitors.
Cardiff remains in the relegation zone, three points adrift of safety.
Liverpool, meanwhile, restore their two-point lead at the top of the table over Manchester City, who play their game in hand away at Manchester United on Wednesday.
The last time Liverpool were in Wales’ capital city in 2014, Luis Suarez scored a hat-trick in a 6-3 thrashing of a Cardiff side managed by Ole Gunnar Solskjaer and destined for relegation.
That chaotic encounter was symptomatic of Liverpool’s title challenge that season: thrilling and brimming with goals but also lacking the defensive fortitude of champions.
The Reds ultimately fell short – but this time it has been a different story.
There are still twists and turns to come in this absorbing title race but Liverpool now have the tightest defence in the Premier League.
A record of conceding only 20 goals in 35 games has allowed them to go toe-to-toe with a Manchester City side widely regarded as one of the greatest to have graced this competition.
Elsewhere Arsenal’s hopes of a top-four finish were dented after Christian Benteke’s first goal in a year helped Crystal Palace to an excellent win which confirmed their Premier League place.
Benteke was left unmarked to head Luka Milivojevic’s delivery past Bernd Leno, only for Mesut Ozil to equalise with a clever finish shortly after half-time.
However, two goals in eight minutes ended Arsenal’s 10-match winning league run at Emirates Stadium.
Wilfried Zaha capitalised on a mistake by Shkodran Mustafi to restore Palace’s lead and James McArthur’s header made it 3-1 before Pierre-Emerick Aubameyang reduced the deficit with his 19th league goal of the season.
This even as Manchester United boss Ole Gunnar Solskjaer apologised to the club’s fans for their abject performance in Sunday’s 4-0 loss to Everton.
United have lost six of their past eight games in all competitions and are sixth in the Premier League.
“From the first whistle, everything went wrong,” Solskjaer told Sky Sports.
“I just want to apologise to the fans. They’re the only people with the badge on today who can hold their head high, because we can’t.”
Speaking to Match of the Day, Solskjaer added: “We were beaten on all aspects today and the only place we beat Everton – I can’t say we beat them – but we had a fantastic support and I just want to apologise for the performance we turned out.”
Goals from Richarlison, Gylfi Sigurdsson, Lucas Digne and Theo Walcott handed United their biggest defeat of the season in a game where the visitors did not register their first shot on target until the 86th minute.
United are next in action against local rivals Manchester City on Wednesday