An early penalty from Xabi Alonso and late goals by Craig Bellamy and captain Steven Gerrard gave Liverpool an easy victory over a Charlton side rooted in the relegation zone.
A third consecutive high-scoring league win moved Liverpool on to 31 points, just ahead of Arsenal (30) and Portsmouth (29) after their entertaining draw in north London.
Nigeria striker Obafemi Martins scored both Newcastle United's goals in a 2-1 win over bottom club Watford, striker David Bentley got a late winner as Blackburn Rovers won 2-1 at Reading and Sheffield United beat Wigan Athletic 1-0 away.
Despite another big win, after 4-0 routs of Wigan and Fulham, Liverpool are still adrift of champions Chelsea (39) and leaders Manchester United (44), who both play on Sunday.
Charlton were in trouble after just two minutes when their former Liverpool defender Djimi Traore swung his boot into the face of Jermaine Pennant as he tried to intercept Mark Gonzalez's lofted cross from the left wing.
Referee Howard Webb pointed to the spot and Spanish midfielder Alonso converted to put Liverpool in front.
Bellamy volleyed past keeper Thomas Myhre after running on to a neat through-ball in the 82nd minute and Gerrard added a third in the 88th when he picked his spot after a knockdown by substitute Peter Crouch.
"We created a lot of chances, we scored three goals but we could have scored two or three more," Liverpool manager Rafael Benitez told Sky Sports.
Portsmouth, fielding two former Arsenal stalwarts in striker Nwankwo Kanu and defender Sol Campbell, went ahead in first-half stoppage time when French defender Noe Pamarot nodded in the rebound after a David Thompson header hit the post.
The second half was only two minutes old when Pompey's Matthew Taylor, who volleyed home from 40 metres last weekend, volleyed in an another from outside the area.
Arsenal looked set for a first home league defeat at their new Emirates Stadium, before everything changed in five minutes.
Togo striker Emmanuel Adebayor scored in the 58th minute, just three minutes after replacing Jeremy Aliadiere, when he sidefooted in a good ball from teenager Theo Walcott.
Arsenal were level two minutes later when a deflected Adebayor cross found its way to Walcott and his ball into the area was steered home by Brazilian midfielder Gilberto.
Sixth-placed Bolton Wanderers were playing Aston Villa in the day's late kickoff.
Newcastle shrugged off their midweek defeat at Chelsea with another win courtesy of Martins, who had also scored twice in their 3-1 win at Blackburn the previous weekend.
The Nigerian struck both in the second half, either side of an equaliser from Watford's French striker Hameur Bouazza.
Bentley got a superb late winner for Blackburn, rifling in after a long run, while Rob Hulse got Sheffield United's winner on the stroke of halftime.