The hosts had already seen an Ashley Barnes volley ruled out for offside when Jack Cork gave the Clarets the lead, this time the flag staying down.
Barnes challenged Alisson in the box and the goalkeeper spilled the ball for Cork to tap in, but James Milner found the bottom corner with a fine strike from 25 yards to quickly equalise.
Jurgen Klopp then sent for substitutes Mohamed Salah and Firmino and it changed the game, with the latter scoring the winner less than three minutes after his introduction, staying onside to finish a set-piece struggling Burnley defended badly. Shaqiri then put the seal on the result for Liverpool late on.
Joe Gomez was forced off injured after a heavy challenge from Ben Mee as Burnley made a physical start.
Liverpool had to wait until the 29th minute for their first effort on goal, a Virgil van Dijk header from Milner's corner easily saved by Joe Hart.
Burnley had the ball in the net first, Barnes brilliantly volleying in Robbie Brady's free-kick, but a marginal offside call saw the goal disallowed.
Hart plunged to his right to turn away Daniel Sturridge's 20-yard drive after the restart, the Burnley goalkeeper then making a sensational save to tip Naby Keita's piledriver on to the post.
Burnley took the lead in the 54th minute as James Tarkowski's header was saved by Alisson, Barnes beating the goalkeeper to the loose ball with Cork pouncing on the rebound to slot home.
The Clarets' advantage lead was short-lived, Divock Origi teeing up Milner for an excellent drive into the bottom-right corner, Klopp swiftly bringing on Salah and Firmino to hunt a winner.
And Firmino ensured Liverpool set a club record for the most points after 15 games of a league season, tucking in from close range after Van Dijk turned a Trent Alexander-Arnold free-kick back into the six-yard box.
Battling Burnley tried to snatch a point, but Alisson made a fine save to deny captain Mee, Shaqiri then finishing off a rapid counter-attack led by Salah to secure the points.
What does it mean? Reds show grit
A wet Turf Moor provided a tricky backdrop for Liverpool, who made seven changes from Sunday's dramatic Merseyside derby win at home to Everton. But their class showed with Milner's terrific finish and a well-worked free-kick narrowing the gap to City back to just two points. Burnley slipped to a sixth loss in their last seven matches, but Sean Dyche will take heart from an improved display.
Van Dijk leads by example
Liverpool fell behind but within 15 minutes they were in front, Van Dijk playing a key role in their winner. He read Alexander-Arnold's set-piece perfectly to set up Firmino for a simple finish and the centre-back was a titanic presence at the back, as well as using possession well.
Sturridge wasteful on rare opportunity
Salah and Firmino being benched and Sadio Mane missing out entirely meant Sturridge started in attack, but the striker mostly struggled to make an impact. It felt telling Liverpool took the lead moments after Firmino's introduction, the Brazilian scoring with his first touch, although Sturridge did have a hand in Shaqiri's injury-time clincher.
Key Opta facts:
50 - This is the 50th Premier League game that James Milner has scored in, with none of the previous 49 seeing him end up on the losing side (W38 D11 L0). Omen. pic.twitter.com/u0ytGkoOET — OptaJoe (@OptaJoe) December 5, 2018
- Burnley have won just nine points from their opening 15 games this season. Just three of the previous 18 teams to have won nine points or fewer from their first 15 games of a Premier League season have avoided relegation: Sunderland in 2013-14, Wigan in 2007-08 and Coventry in 1995-96.
- Alisson has remained unbeaten in his opening 15 league matches as a Liverpool player; equalling the club record in the Premier League set by Javier Mascherano in November 2007.
- This was the first Premier League game that none of the trio of Mohamed Salah, Roberto Firmino or Sadio Mané have been in Liverpool’s starting XI since May 2017 versus West Ham United.
- This was the 10th competitive game that Jack Cork has scored in for Burnley overall and the first time he’s lost when doing so (W8 D1 L1).
The Premier League games keep coming thick and fast with Liverpool travelling to Bournemouth on Saturday, the same day Burnley host Brighton and Hove Albion at Turf Moor.