Liverpool took the lead on 34 minutes with Lallana's shot from 30 yards going low into the bottom corner where Hart's role must be questioned. Even Klopp's face on the sidelines showed his surprise that it went in.
Milner finished the second nicely just before the interval and then Lallana assisted Firmino for the third, the Brazilian's seventh goal of the season.
City had looked short on ideas in the first half, and manager Manuel Pellegrini looked to rectify the situation by replacing Raheem Sterling with Wilfried Bony in the break. It had little effect, and Divock Origi had the first chance of the second half three minutes in when he forced Hart into a smart save from a tight angle—though the young Belgian arguably should have squared the ball across the box.
Pellegrini introduced another striker to join Sergio Aguero and Bony when he replaced Fernandinho with Kelechi Iheanacho, as City looked to get something from the game. Milner almost piled more misery on to City on the hour when he let fly form just outside the box, but Hart saved well and pushed the ball over the bar.
The visitors could just not get into the game, and even Aguero could not find space in the box as he was well marshalled by Kolo Toure. Bony offered little, a tame late attempt from distance fairly indicative of his night's work.
Joe Allen almost added a spectacular fourth in stoppage-time, but the game eventually finished 3-0 and Liverpool took sweet revenge for the heart breaking loss on Sunday.