Town took a one-goal advantage into half-time after Glen Rea volleyed in from close range, but the Robins hit back in the second half as Sonny Bradley turned the ball into the back of the net.
It was a minor setback as Kiernan Dewsbury-Hall saved the day with a great hit from 25 yards seven minutes later, his first in a Luton Town shirt.
Manager Nathan Jones made six changes following the Boxing Day defeat to Reading, including Simon Sluga who was restored to the starting line-up following an injury sustained against Cardiff City in November.
Dewsbury-Hall – who started from the off this evening after playing 45 minutes against Reading – produced a perfect corner which Rea thumped past Dan Bentley on the volley to give the Hatters the lead.
Not long after, the away side had their tails up after a penalty appeal was rebuffed as Antoine Semenyo went down under challenge from Rhys Norrington-Davies.
Sluga then saved well from Semenyo down low moments later, before Jack Hunt crossed for Chris Martin, who watched in surprise as his powerful header cannoned off the crossbar and didn’t ripple the back of the net from close range.
Town squandered a golden opportunity to double their advantage as the ball broke inside the Bristol City half early in the second period.
Harry Cornick squared the ball across to James Collins, who was in acres of space, but he was denied superbly by Bentley one-on-one.
That was a chance the away side capitalised on, as they equalised just after the hour mark.
Nakhi Wells found space in behind the Town defence and his low cross was inadvertently turned in by Sonny Bradley who attempt to clear the danger.
The game opened up as the Hatters went in search of a second goal, which almost came through Cornick. Norrington-Davies’ cross was deflected into his path and the number seven struck the ball sweetly with the outside of his boot, but it went a whisker wide of the target.
Whilst Cornick went close, Dewsbury-Hall supplied the finish to put the Hatters back in front as momentum shifted once more.
The Leicester loanee picked the ball up from 25 yards and fired into the bottom corner, reeling away in celebration for the first time at Kenilworth Road.
Town remained on the offensive looking to kill the game off with a third goal and Norrington-Davies was also on a hunt for a first Hatters goal, but Bentley was equal to his right-footed effort.
There were plenty of moments to cherish on the pitch for the Hatters this year and the players will look to build on the three points and a good performance when they face Queens Park Rangers on January 2nd.
Town: Sluga; Pearson, Lockyer, Bradley (C), Norrington-Davies; Rea, Tunnicliffe (LuaLua 64), Mpanzu (Potts 64), Dewsbury-Hall; Cornick (Clark 85), Collins.
Subs not used: Isted, Hylton, Lee, Moncur, Galloway, Nombe.
Goals: Rea (17), Dewsbury-Hall (68)
Yellows: Tunnicliffe
Bristol City: Bentley, Hunt (Mariappa 76), Vyner, Kalas, Rowe; Bakinson, Nagy, Massengo (Diedhiou 59); Semenyo, Wells (Bell 88); Martin.
Subs not used: O’Leary, Moore, Smith, Pearson, Towler
Goals: Bradley (61’ og)
Yellows: Semenyo
Referee: Gavin Ward