Andi Weimann gave the Robins the perfect start with a second minute goal and then captain Dan Bentley saved Danny Ward’s penalty four minutes later.
Moments before half-time however Duane Holmes got the Terriers back on level terms with an equaliser.
Fifty seconds after the restart, Danel Sinani put Caros Corberan’s men in front before Danny Ward atoned for his penalty miss with an insurance goal.
Weimann added a second goal deep into seven minutes of stoppage time to reduce the deficit but ultimately it proved too little too late.
The win brings to an end City’s four game unbeaten run at home and gives the Yorkshire side their first away win here in eight years.
Nigel Pearson’s side stay in 18th with half the season now played whilst Huddersfield are up to ninth.
Tale of the match
In the game’s first chance, came a goal. Alex Scott dispossessed Harry Toffolo and Antoine Semenyo was able to put it on a plate for Weimann to score from a few yards out.
Minutes after the away side were awarded a penalty as they searched for an immediate response. Ward forced Bentley to palm away a low shot into the path of Lewis O’Brien who was upended by Zak Vyner. Ward, who previously wore the colours of Severnside rivals Cardiff City, stepped forward but the City captain expertly saved his spot kick.
Huddersfield were the team with possession but the hosts were the team with the meaningful chances. Semenyo almost went from provider to goal scorer as his first shot went narrowly wide before forcing Lee Nicholls into a save with a far-sided shot.
The game became quite a cagey affair just after the half-hour mark but Daniel Sinani brought some life back into it as he forced Bentley to be alert with a powerfully swept attempt.
City’s lack of a second goal came to haunt them as Huddersfield got themselves back into the match. Toffolo’s low cross found the feet of Holmes who ghosted his way into the box and tucked his shot past Bentley.
Following the theme of the first half, it was a quick start to the second period but this time Huddersfield would score. Ward played in Sinani on the far side and the Luxembourg forward scored with aplomb.
Adapting to his role as a central striker rather than a winger, Semenyo almost got City back in the game but his low driven shot cannoned off of the post. Weimann tried to follow up but was tackled in the box.
They would be made to rue not taking their chance as up the other end a deflected cross from Sorba Thomas found Ward who headed past a stranded Bentley.
City were at least keen to get themselves back into the game and Han-Noah Massengo almost pulled a goal back but his placed shot was blocked by Nicholls.
They did get the game to within one goal as Weimann bagged a second goal deep into added-on time with Semenyo assisting him for a second time.
Danny Ward: Huddersfield’s front-man showed great character to bounce back from his early penalty miss to inspire his team to victory. His penalty wasn’t a bad one but he gave Bentley the chance to save it.
Ward picked himself up in the second-half and played in Sinani for his goal, having shown good hold up play. His goal was then well taken as he positioned himself well to head home past Bentley.
Andi Weimann: He hadn’t scored for over a month but Weimann was back amongst the goals today and took his tally to eight for the season. The Austrian has been operating in the number ten role as of late so it’s expected that perhaps the goals have dried up. He showed all the instincts of a striker for his finish though as he was in the right place at the right time to stroke home from Antoine Semenyo’s pass.
The same can be said for his second goal as again he was in the right place to score.
Antoine Semenyo: A frustrating day in front of goal for Semenyo but credit to him, he kept on going and had two assists to his name. It may persuade Pearson to play him as a wing-back instead so he can accommodate Weimann in a higher position or try Nahki Wells up front alongside Chris Martin.
Zak Vyner: The central defender conceded a penalty on Lewis O’Brien and was part of a defence which shipped two goals. It was on his side that Huddersfield’s attack were able to just walk through the defence, allowing Sinani to score.
Chris Martin: Another game in which perhaps the City forward has failed to make an impact on the match. For a tall front-man like himself, he didn’t impose himself on the opponents. City do like playing the ball on the ground rather than whipping crosses in but it may be time to play to his strengths or at least consider Nahki Wells.
Martin hasn’t scored from open play now since early October, which will do him no favours if rumours of a front-man being a priority in January are true.
A section of City fans: As Sorba Thomas was prepared to take a corner, an object was thrown at him. It brought the game to a halt as both sets of players were brought off the pitch. Four minutes would elapse before the game restarted.
Events like that always give the football authorities the chance to punish a football club.
Bristol City (3-4-1-2): Daniel Bentley 6, Zak Vyner 5, Tomas Kalas 6, Robert Atkinson 6 (Cameron Pring, 55;6), Alex Scott 6, Han-Noah Massengo 6 (Nahki Wells, 82), Matty James 6, Ayman Benarous 6, Antoine Semenyo 7, Andreas Weimann 7, Chris Martin 6.
Huddersfield Town (3-4-2-1): Lee Nichols 6, Harry Toffolo 7, Matty Pearson 6, Lewis O’Brien 7, Scott High 7, Sorba Thomas 6, (Ollie Turton, 83), Duane Holmes 7 (Josh Koroma, 88), Daniel Sinani 7, Danny Ward 8 (Jordan Rhodes, 77), Levi Colwil 7, Tom Lees 7.
Man of the Match
A goal and an assist, it has to go to Danny Ward.
City are on the road on Boxing Day as they make the trip to Kenilworth Road to face Luton Town.
Huddersfield meanwhile are at home at the John Smith’s Stadium against Blackpool.
Both games will be monitored however by the EFL in the lead up to the match given the rise of COVID-19 cases.