Jesse Marsch's men lost Liam Cooper to injury in the warm-up and had to replace Stuart Dallas late in the first half as the Northern Irishman was stretchered off with what appeared to be a serious knee problem.
Rodri's headed opener from a Phil Foden free-kick separated the sides at the break, although Leeds were well in the game, and then Nathan Ake gave the hosts a mountain to climb with another goal from a set-piece.
Leeds huffed and puffed and continued to work but were undone too easily by a back to front move that was finished ruthlessly by Gabriel Jesus with 12 minutes remaining. Fernandinho added insult to injury in stoppage time, drilling past Illan Meslier from distance.
The result, coupled with Burnley's come-from-behind win over Watford, leaves Leeds five points ahead of 18th-placed Everton who have two games in hand.
1. Illan Meslier - 6
Another tough afternoon for the keeper having to pick the ball out of his net so many times. Could do little with three, got a hand to the fourth and might have kept it out but saw it late.
2. Stuart Dallas - 6
Was locked in a ding-dong battle with Grealish and battling well before a serious injury forced him off. Not always on top but was winning his share of scraps.
3. Junior Firpo - 6
Early booking put him on a tightrope, again, and there were one or two dicey moments defensively. Tried to offer something going forward.
4. Luke Ayling - 6
Faced a world class test and didn't go under. Will feel he could have done better for the second goal.
5. Pascal Struijk - 6
Had to make some vital blocks and challenges, beaten too easily at times though, albeit by pace and skill.
6. Robin Koch - 6
Some tidy moments, solid for large parts and produced a few nice passes but couldn't stem the tide when City turned it on.