Having missed a first-half penalty, much to the delight of around 2,400 travelling fans, Kodjia headed home Albert Adomah’s cross nine minutes into the second half to shift the balance of power in favour of the hosts in a tight and at times bad-tempered affair.
Conor Hourihane added Villa’s second just five minutes later, leaving City faced with a mountain they were unable to climb.
Lee Johnson named an unchanged starting line-up following a creditable 2-2 draw at then Sky Bet Championship leaders Newcastle United on Saturday.
Meanwhile, home manager Steve Bruce included three Ashton Gate old boys; former loanee Nathan Baker, fans’ favourite Adomah and pantomime villain Kodjia.
The sold-out away contingent, positioned to the left of City keeper Fabian Giefer in the first half, took great delight in Kodjia ballooning an attempted cross into the stand, and soon grew encouraged by their team’s start.
Callum O’Dowda beat his man and delivered a cross that needed to be cleared over his own crossbar by Neil Taylor, before Bobby Reid’s sliced volley was headed over by Aden Flint.
At the other end, Adomah reminded the City fans what they were missing with a trademark run down the right, crossing for Andre Green to drill a low shot into the side-netting.
But City had made the better start and were inches away from edging in front after 15 minutes.
Birmingham City loanee Cotterill, booed on his return to the Midlands, delivered a free kick from deep attacked with purpose by Bailey Wright, whose booming header only stayed out via the underside of the crossbar with goalkeeper Sam Johnstone well beaten.
Meanwhile, the Kodjia script was only just beginning. A tame shot, his first of the match, was easily collected by Giefer and greeted by another roar of approval.
But with 20 minutes on the clock the Ivorian had a golden chance to silence the supporters who idolised him only months ago.
When Reid sold Giefer short, the keeper had little option but to race from his line, but Villa’s Gary Gardner got there first and was duly sent crashing to earth by the German shot-stopper.
Straightaway Kodjia sensed his opportunity and grabbed the ball, only to send a well-struck penalty sailing into the abyss via the top of the crossbar as Giefer dived to his left.
Every decision seemed to be going against the £15m striker, who cut a frustrated figure as City grew in confidence.
Some slick interplay involving Korey Smith and Reid sent the latter racing into the box and sending a low ball fizzing across goal but just beyond the reach of the sliding O’Dowda at the far post.
This was a proper Championship game – frantic, aggressive and difficult to take your eyes off even if clear-cut chances were in short supply.
Reid joined Smith and Giefer in the book and Villa’s Hutton followed, while Gardner was forced off with injury to be replaced by Johnson’s former Barnsley captain Hourihane.
By half-time it was a very even contest, but Villa began the second period with an extra spring to their step attacking the famous Holte End.
Left-back Taylor drilled a low cross that was cleared crucially by Joe Bryan, before Mile Jedinak floated the ball back into the danger zone for Kodjia to glance over.
But his time would come. With 54 minutes on the clock, Adomah found space to cross from the right and Kodjia met the delivery with a perfectly placed looping header that left Giefer unmoved as it nestled just inside the far post.
Would he have celebrated a goal in the opening minute? Who knows. But having endured nearly an hour of Bristolian taunts, Kodjia was not about to hide his emotions and shared the moment with his ecstatic supporters.
City’s response was immediate. O’Dowda won a corner, Cotterill delivered and O’Dowda’s header was touched on to the crossbar by a very fine Johnstone save.
The hitting of woodwork was becoming a recurring theme, as Green cut in from the left and eyed the top corner with a brilliant curling shot that crashed against the same lick of paint as Wright’s first-half header.
It was to prove only a temporary reprieve. Five minutes after falling behind, City were 2-0 down with Kodjia at the heart of it again.
Dispossessing Wright near the bye-line, he strode menacingly into the box and cut the ball back for Adomah, whose scuffed shot fell just right for Hourihane to score his first goal for the club with a simple close-range finish.
Johnson reacted soon after, introducing Jamie Paterson and Matty Taylor for Smith and O’Dowda, with City needing to strike back quickly.
But in the meantime Villa had made a substitution of their own – of sorts. A disillusioned home crowd had given way to a boisterous one, whose team were suddenly full of confidence.
City kept going. Taylor chased a quickly-taken free kick towards the corner flag and crossed for Aaron Wilbraham, whose header seemingly struck a defender on the arm, but no spot-kick was forthcoming.
Lee Tomlin replaced Wilbraham in Johnson’s final throw of the dice. One solo run carried him deep into Villa territory, culminating in a backheel to Paterson, whose cross was cut out by Johnstone.
Even with the result realistically beyond them City continued to force the home team back, but there was to be no grandstand finish as Villa held out.