Dallas gave the visitors a surprise lead three minutes before the break with a low shot that went in off the inside of a post.
However, the dismissal of skipper Liam Cooper for a tackle on Gabriel Jesus before the opening period was over appeared to have given the visitors an impossible task.
City predictably dominated the second period but were made to wait until the 76th minute for their equaliser, when Ferran Torres drove home his first Premier League goal since December.
Instead of City completing a triumphant comeback, however, it was Leeds who came up with the winner as Dallas ran on to Ezgjan Alioski’s through ball before sending a shot past Ederson from the edge of the area.
It completed Leeds’ best win since their return to the top flight – and means Manchester United can cut City’s lead at the top to eight points if they win their games in hand against Tottenham and Burnley. City must take 11 points from their remaining six games to guarantee a third league title in four seasons.