The Northern Irishman raced onto a fine through ball from Ezgjan Alioski and flicked past Ederson for his second goal of the game in injury time.
City had been pressing for a winner having finally taken advantage of Liam Cooper’s sending-off to cancel out Dallas’ 42nd-minute opener through Ferran Torres 15 minutes from time.
Cooper was dismissed in the final minute of the first half for a poor challenge on Gabriel Jesus following a VAR review.
The result left City, who had dominated most of the game, still needing 11 points to secure their third title in the space of four seasons.
City, having made seven changes following their midweek Champions League win over Borussia Dortmund, were slow out of the blocks.
Leeds played some neat football and did get behind the hosts’ defence on a couple of occasions early on but failed to capitalise. Their best opening saw Tyler Roberts break into the box on the right but his ball across goal was too far behind Patrick Bamford.
City gradually began to increase the tempo and Ferran Torres had a good effort brilliantly blocked by Cooper at point-blank range following a corner. Jesus’ follow-up attempt was also blocked.
Raheem Sterling came more into the game but was denied a penalty after the ball jumped up and caught Luke Ayling on the arm following a jinking run.
Sterling then blasted over before spurning an even better opportunity, dragging a first-time shot horribly wide, after being teed up by a charging Fernandinho.
City were made to pay for that miss as Helder Costa broke down the left and passed inside to Bamford. Dallas then latched onto an inviting lay-off on the edge of the area, hitting a firm low shot that left Ederson rooted to the spot as it rebounded in off the base of the post.
It was a lead that came against the run of play and Leeds’ hopes of hanging onto it almost immediately suffered a blow as Cooper was dismissed for a bad challenge on Jesus.
Referee Andre Marriner initially showed a yellow card after Cooper caught the Brazilian on the knee in his follow-through but revised that to red after reviewing the incident on the pitchside monitor.
City chased the equaliser in the second half with Oleksandr Zinchenko forcing a good save from Illan Meslier and Bernardo Silva volleying wide from close range. Ilkay Gundogan fired over and Fernandinho had a powerful effort palmed over by Meslier, who also saved from Joao Cancelo.
The equaliser finally came 15 minutes from time as Silva flicked the ball into the path of Torres and the Spaniard clipped it past Meslier.
City continued to press but Leeds surprisingly had the final say as Dallas broke clear and slid a fine finish through the legs of Ederson. It was Leeds’ first victory against one of the established ‘big six’ since their promotion.
Support The Yorkshire Post and become a subscriber today. Your subscription will help us to continue to bring quality news to the people of Yorkshire. In return, you’ll see fewer ads on site, get free access to our app and receive exclusive members-only offers. Click HERE to subscribe.