The draw halted Villa’s 10-game winning run, and the sides could yet meet again in next month’s play-off final.
Villa served early warning of their excellent current form with Andre Gray and Kodjia both heading narrowly off-target.
Leeds should have taken a ninth-minute lead though. Luke Ayling’s cross found its way to Jack Harrison in the penalty area and the winger mis-hit his shot from six yards.
Ahmed Elmohamady put in a timely block to deny Harrison at the far post soon after as Leeds began to hit their stride.
Adam Forshaw lashed a shot from the edge of the area over the crossbar, but Villa responded through John McGinn’s flicked header, which was well saved by Leeds goalkeeper Kiko Casilla.
Referee Stuart Attwell incensed the home crowd and the Leeds bench with several contentious decisions, with skipper Liam Cooper and later Bielsa both booked.
Stuart Dallas crashed a low shot wide after another spell of concerted Leeds pressure before the break, but the first half ended goalless.
Leeds picked up where they left off in the second period after injured defender Dallas and Harrison were replaced by Gaetano Berardi and Tyler Roberts.
Forshaw fired inches wide, while Villa midfielder Jack Grealish was wayward with a free-kick before Kodjia spurned a golden chance for Villa when he blazed over from inside the box.
Pablo Hernandez went close after trying his luck from 25 yards but both sides lacked composure with the goal in sight.
The game’s key talking point then occurred, with El Ghazi’s red card looking extremely harsh as replays suggested his elbow barely made contact with Leeds’ Patrick Bamford.
Leeds were unlucky not to snatch a winner in the closing stages as substitute Roberts’ shot was blocked before Villa goalkeeper Jed Steer brilliantly saved from Hernandez’s shot.