Leeds United claim all three points at the Etihad.
Manchester City 1 (Torres 76)
Leeds United 2 (Dallas 42, 90+1)
Man City: Ederson, Zinchenko, Stones, Ake (Gundogan 58), Mendy (Foden 74), Fernandinho, Cancelo, Silva, Torres, Sterling, Jesus. Subs not used: Steffen, Walker, Dias, Rodri, De Bruyne, Mahrez, Garcia.
Leeds: Meslier, Ayling, Cooper, Llorente, Alioski, Phillips, Dallas, Roberts (Koch 63), Costa, Raphinha (Shackleton 90+5), Bamford (Struijk 45). Subs not used: Casilla, Poveda, Hernandez, Berardi, Gelhardt, Klich.
Stuart Dallas scored an injury time winner as 10-men Leeds United stunned Manchester City at the Etihad Stadium.
An intriguing tactical battle began with both sides starting brightly, without creating a clear-cut chance until the 16th minute, when Tyler Roberts put in a really dangerous cross, which Patrick Bamford just overran.
A minute later Man City threatened with Raheem Sterling trying his luck from the edge of the box, curling a strike over the crossbar.
Sterling continued to threaten, this time he broke into the Leeds box well, before forcing Illan Meslier into a decent stop.
The hosts created another opportunity from a corner in the 21st minute, with both Ferran Torres and Gabriel Jesus seeing shots superbly blocked by the Leeds defence.
Sterling fired over from 25 yards, before the England international was picked out in the Leeds area following a good break into the box by Fernandinho, but he could only put the chance wide.
Leeds took the lead with three minutes of regular time remaining in the first half. Helder Costa did really well to keep the ball on the left flank, before finding Patrick Bamford who teed up Stuart Dallas to strike on the edge of the box and he brilliantly found the net via the post.
There was then controversy, after Liam Cooper who was shown a yellow card for a challenge on Gabriel Jesus, was sent off following a VAR intervention, with referee Andre Marriner changing his decision. Despite this, the Whites went in ahead at the break.
HALF TIME: MANCHESTER CITY 0-1 LEEDS UNITED
The hosts began the second half with attacking intent given their extra man and Oleksandr Zinchenko nearly got the Sky Blues level with a strike from the edge of the box, but for a brilliant Meslier save.
Pep Guardiola’s side continued to threaten without testing Meslier until the 60th minute, when he denied a long-range John Stones strike.
A minute later, Stones again tried his luck and the ball pinged around the Leeds box to Bernardo Silva, who struck just wide.
Following a free kick on the right flank, the ball dropped to substitute Ilkay Gundogan on the edge of the Leeds box, but he struck just over.
Meslier was again forced into action, first denying Fernandinho from range, before stopping Joao Cancelo’s effort from the edge of the box.
Manchester City pulled level in the 74th minute, Fernandinho found Bernardo Silva who beat the offside trap and he teed up Ferran Torres to strike home.
The hosts continued to apply pressure, but it was Leeds who nearly regained the lead in the 85th minute. Raphinha broke through on goal, but Ederson superbly denied him, as the Leeds forward tried to round him.
Bernardo Silva then fired at goal from just inside the Leeds box seeing his shot go wide, followed by Fernandinho taking his chance with a headed shot which was well saved by Meslier as we reached the 90-minute mark.
Given all of the pressure Leeds had to endure during the second half it was in fact Leeds who came up with the winner in the first minute of stoppage time. Dallas, with his second of the game, found himself on the end of a Gjanni Alioski through ball before sending a shot straight past Ederson from the edge of the area.
Leeds United held on for the final moments of the game, taking all three points from the Etihad Stadium after a fantastic battling performance.
FULL TIME: MANCHESTER CITY 1-2 LEEDS UNITED
Booked: Ake, Silva, Fernandinho (Man City), Alioski (Leeds)
Sent off: Cooper (Leeds)
Referee: A. Marriner
Venue: Etihad Stadium