Town will need to beat Brentford on Saturday to go back into the top six after suffering a second successive League defeat for the first time this season.
Daryl Murphy saw a penalty brilliantly saved by Marco Silvestri eight minutes from time that would have given Blues a point after a flurry of goals in the last 20 minutes.
Alex Mowatt put Leeds in front with a free-kick but Town were level soon after, substitute Freddie Sears notching his fourth goal for Blues.
Leeds were back in front almost immediately though, Billy Sharp finishing superbly after good work by Lewis Cook and after being boosted by the penalty save, the Whites held on despite Town pressing for a late equaliser.
Mick McCarthy made four changes to the side that went down at Norwich on Sunday, with Paul Anderson and Jonathan Parr coming into midfield and newboys Chris Wood and Luke Varney starting up front.
Varney had the ball in the net after just three minutes against his former club, a terrific header from Anderson’s excellent cross but not before the offside flag was raised.
Tommy Smith was in the right place to clear off the line soon after in a flowing opening to the game, Bart Bialkowski having to hurry his clearance as Mowatt closed him down.
Tyrone Mings showed pace and awareness to prevent Sam Byram getting in down the Town left, the Blues’ defender then prominent at the other end to force a corner following an Anderson free-kick.
Varney’s willingness to run into the channels opened up another attack for Blues, Mings’ cross just beating Wood at the far post.
Luke Chambers’ cross was heading for Varney until Giuseppe Bellusci intervened in the Leeds’ box, while at the other end, Sol Bamba skimmed a header wide from a free-kick.
Bamba was needed in his more accustomed defensive role to cancel out the threat from Mings, who was pushing forward at every turn.
Leeds were gifted a gilt-edged chance just past the half hour, Christophe Berra slipped inside the Town box, Byram crossed but Sharp couldn’t convert, the striker claiming he was pushed as he connected with the ball but referee Mark Brown waved away the penalty appeals.
Bellusci sent an ambitious 30 yard free-kick well over Bialkowski’s goal, then good link up play between Parr and Mings down the flank won a sixth corner for Blues but Jay Tabb’s delivery was cleared as Cole Skuse looked to feed the ball back into the box.
Wood almost capitalised after Silvestri failed to clear the danger with his punch as Blues pressed for a breakthrough before half-time, Luke Murphy getting back to clear from Varney soon after.
Byram had the last effort of the first 45 minutes, his long range strike never threatening to trouble Bialkowski.
Silvestri was in the action in the first couple of minutes of the second-half, forcing Mings’ header behind for a corner. Skuse saw his goalbound shot blocked by Bamba, then Mings had another effort beaten out by the Leeds’ defence in a bright start to the second-half for Town.
Berra got his body in the way to block Sharp’s shot after good work by Mowatt as Leeds responded before Blues made a first change on the hour, Kevin Bru on for Anderson. Murphy soon followed, Varney making way.
Chambers had a shot blocked after another excellent delivery from Mings, Bru picking up the first yellow card of the game for a foul.
Bialkowski was quick off his line to smother the danger after substitute Mirco Antenucci looked to get on a long ball, then Town conceded a free-kick in a dangerous position and were made to pay when Mowatt scored 20 minutes from time.
Town didn’t take long to level though, Sears, on for Wood, finding the net with a shot that Silvestri should have done better with but Blues were behind again almost immediately, Lewis Cook feeding Sharp with a clever delivery and the striker beating Bialkowski with an excellent finish.
Mings tested Silvestri with a strike, the Italian ‘keeper beating out the effort, Bru unable to capitalise on the rebound.
Town were handed the lifeline to equalise eight minutes from time, Bamba handling the ball but Murphy was denied by an excellent save from Silvestri, who touched the ball onto the post to earn the Whites the three points.
Leeds: Silvestri, Wootton, Bamba, Bellusci, Cooper, Byram, Cook, Murphy, Mowatt, C Taylor (Antenucci 68), Sharp (Morison 85). Subs not used: S Taylor, Berardi, Sloth, Doukara, Cani.
Town: Bialkowski, Chambers, Smith, Berra, Mings, Skuse, Tabb, Parr, Anderson (Bru 60), Varney (Murphy 65), Wood (Sears 72). Subs not used: Gerken, Clarke, Connolly, Chaplow. Booked: Bru, Skuse.