Match ends, Rotherham United 2, Swansea City 1.
Rotherham United stunned Swansea City with a 2-1 comeback victory at the New York Stadium.
The Millers were looking to end a run of eight games without a win and managed to do so via two late penalties from Ryan Manning.
Oli McBurnie's seventh goal of the season put the Swans ahead after fine work from the impressive Daniel James.
However, the Swans failed to score again and paid the penalty when Manning twice slotted home from the spot.
Rotherham have scored just two first-half goals in the Championship this season, fewer than any other team, and it was Graham Potter's side who created the opening chances in a first period they dominated.
Swansea have not won three consecutive league matches since May 2017, under manager Paul Clement, but they looked like promotion contenders early on, despite Potter dismissing the suggestion at his pre-match press briefing.
Swansea had failed to score in nine of their previous 12 away league matches, including each of their previous four, but it was only a matter of time at the New York Stadium as they made a fast start.
Bersant Celina and James both came close to finding the net, but were denied by Rotherham goalkeeper Marek Rodak, before McBurnie's calm finish.
The Swans continued to push for a second after the break and Rodak again impressed as he denied Leroy Fer.
Jay Fulton's strong run resulted in a shot fired over the crossbar, which would prove extremely costly.
The hosts had barely threatened all afternoon, but Swansea's failure to kill the game off gave them hope.
Manning's terrific free-kick with 20 minutes remaining looked destined to bring them level, but Kristoffer Nordfeldt denied him smartly.
However, Nordfeldt was then facing a penalty after bringing down Jamie Proctor and despite diving the right way, he was unable to deny Manning.
Manning then won it for the hosts when he again converted from 12 yards after Fer was adjudged to have handled inside the box.
Rotherham boss Paul Warne:
"I'm not going to tell a lie. I wasn't happy with our performance. In fairness, I think the lads gave everything they had. They were significantly better than us, virtually in every department for the majority of the game.
"No one in the dressing room is proud of the performance but we're proud of the result. I'm definitely proud of the character of my team.
"For us to get a 2-1 win out of a disappointing performance is impressive and at least we can send the fans home happy - which I'd actually like to mention because they've stuck with the players today.
"They realised how good a side Swansea were and how difficult it was for us to even put a glove on them at times. I'd like to thank them for that."
Swansea City manager Graham Potter told BBC Sport Wales:
"We didn't score the second goal and at 1-0 you always leave yourselves open to anything and that proved to be the case.
"If you look at the game we had enough chances to score the second, but we didn't manage to do that.
"The penalties, I haven't seen them back, but the first one, their boy is offside to start with and then I wasn't so sure, there didn't seem too much in it.
"The second one, I see why he's given it, but the ball is hit so hard at Leroy... but that can happen.
"When it is 1-0 and you've been dominant, if you don't score the second anything can happen.
"We have to take the pain from this and try and be better."
- 13TowellSubstituted forProctorat 75'minutes
- 4VaulksBooked at 22mins
- 11TaylorSubstituted forNewellat 62'minutes
- 19VassellSubstituted forManningat 45'minutes
- 24SmithBooked at 22mins
- 26NaughtonSubstituted forMcKayat 90'minutes
- 5van der HoornBooked at 90mins
- 27FultonSubstituted forBaker-Richardsonat 90'minutes
- 8FerBooked at 22mins
- 10CelinaBooked at 74mins
- 9McBurnieBooked at 86mins
- Tony Harrington
- Shots on Target
Second Half ends, Rotherham United 2, Swansea City 1.
Matt Grimes (Swansea City) wins a free kick in the defensive half.
Foul by Jamie Proctor (Rotherham United).
Corner, Rotherham United. Conceded by Joe Rodon.
Offside, Rotherham United. Joe Newell tries a through ball, but Ryan Williams is caught offside.
Attempt blocked. Courtney Baker-Richardson (Swansea City) right footed shot from the centre of the box is blocked. Assisted by Bersant Celina.
Offside, Rotherham United. Joe Mattock tries a through ball, but Michael Smith is caught offside.
Substitution, Swansea City. Barrie McKay replaces Kyle Naughton.
Substitution, Swansea City. Courtney Baker-Richardson replaces Jay Fulton.
Mike van der Hoorn (Swansea City) is shown the yellow card for a bad foul.
Foul by Mike van der Hoorn (Swansea City).
Jamie Proctor (Rotherham United) wins a free kick in the attacking half.
Attempt missed. Matt Grimes (Swansea City) left footed shot from outside the box misses to the right following a set piece situation.
Attempt blocked. Matt Grimes (Swansea City) left footed shot from outside the box is blocked.
Connor Roberts (Swansea City) wins a free kick in the attacking half.
Foul by Joe Mattock (Rotherham United).
Goal! Rotherham United 2, Swansea City 1. Ryan Manning (Rotherham United) converts the penalty with a left footed shot to the top right corner.
Oliver McBurnie (Swansea City) is shown the yellow card.
Penalty conceded by Leroy Fer (Swansea City) with a hand ball in the penalty area.