Match ends, Bristol City 3, Luton Town 0.
Bristol City bounced back from a run of four straight defeats with a comfortable win over struggling Luton.
Marley Watkins, on his first appearance since 10 November, opened the scoring after just four minutes, nodding in Niclas Eliasson's cross.
Famara Diedhou doubled the lead from the penalty spot before half-time, after Kazenga LuaLua was penalised for a foul on Jack Hunt.
And Hunt, who earlier cleared a rare Luton chance off the line, created City's third, flicked in by Andreas Weimann.
Defeat for the Robins would have marked their longest losing streak in the league since their run of eight straight losses in late 2016 and early 2017.
But they never looked in danger of succumbing to Graeme Jones' Hatters from the moment Watkins converted Eliasson's delivery.
Luton keeper James Shea kept out first-half efforts from Josh Brownhill and Watkins, but his side could not offer a similar threat at the other end.
The Hatters remain in trouble following an eighth straight away league defeat.
Bristol City boss Lee Johnson told BBC Radio Bristol:
"From bottom to top in terms of defensive performance, today was outstanding and it gave us the platform if you like to break and to look really dangerous on the counter.
"The team brain is important. You can't afford one player (to be) out of sync. When we do play with that one brain as a team I think we're really difficult to play against.
"I'm sure one or two will come in with a bit of quality (in the January transfer window) and propel us to where we want to be."
Luton Town manager Graeme Jones told BBC Three Counties Radio:
"I'm disappointed we got off to a really difficult start. You need to show resistance and resilience to see out of those moments and to stay in the game and have a chance.
"We made it a mountain to climb from minute one.
"Maybe we were a bit short, we've got an honest group of players who today couldn't raise a gallop and couldn't fight a corner."
- 29WilliamsBooked at 49mins
- 3DasilvaSubstituted forRoweat 68'minutes
- 15WatkinsSubstituted forSmithat 80'minutes
- 9DiédhiouSubstituted forRíos Lozanoat 84'minutes
- 31Ríos Lozano
- 22BoltonSubstituted forCranieat 45'minutes
- 6PearsonBooked at 76mins
- 5BradleyBooked at 58mins
- 4TunnicliffeSubstituted forMoncurat 60'minutes
- 8BerryBooked at 32mins
- 19CollinsBooked at 63mins
- 25LuaLuaSubstituted forSheehanat 81'minutes
- Oliver Langford
- Shots on Target
Second Half ends, Bristol City 3, Luton Town 0.
Corner, Luton Town. Conceded by Korey Smith.
Attempt blocked. George Moncur (Luton Town) right footed shot from outside the box is blocked. Assisted by James Bree.
Sonny Bradley (Luton Town) wins a free kick in the defensive half.
Foul by Rodri (Bristol City).
Attempt missed. Andreas Weimann (Bristol City) right footed shot from outside the box is just a bit too high. Assisted by Korey Smith following a corner.
Corner, Bristol City. Conceded by Martin Cranie.
Foul by James Collins (Luton Town).
Tommy Rowe (Bristol City) wins a free kick in the attacking half.
Attempt blocked. Ádám Nagy (Bristol City) right footed shot from the centre of the box is blocked. Assisted by Niclas Eliasson.
Substitution, Bristol City. Rodri replaces Famara Diédhiou.
Attempt missed. Pelly-Ruddock Mpanzu (Luton Town) right footed shot from outside the box misses to the left.
Corner, Luton Town. Conceded by Jack Hunt.
Attempt blocked. Harry Cornick (Luton Town) left footed shot from the left side of the box is blocked. Assisted by Alan Sheehan.
Substitution, Luton Town. Alan Sheehan replaces Kazenga LuaLua.
Substitution, Bristol City. Korey Smith replaces Marley Watkins.
Kazenga LuaLua (Luton Town) wins a free kick on the left wing.
Foul by Marley Watkins (Bristol City).
Matty Pearson (Luton Town) is shown the yellow card for a bad foul.