Match ends, Swansea City 0, Nottingham Forest 1.
Swansea City's unbeaten start to the season came to an end as substitute Alfa Semedo earned Nottingham Forest a deserved win in south Wales.
Forest were dominant in the first half but failed to make a breakthrough.
Swansea improved after the break without looking like finding a winner before Semedo tapped home Lewis Grabban's cross with five minutes left.
Despite the defeat, Swansea remain top of the Championship, while Forest move up to ninth.
There is little doubt that Forest deserved all three points against a surprisingly lacklustre Swansea.
The Swans, unbeaten at the top of the table, made one change with Wayne Routledge replacing Yan Dhanda, but the visitors, clearly still searching for the their best starting side, made five changes from their draw with Preston.
Neutrals certainly would not have known which side was flying high in a first half entirely dominated by the visitors, who did everything but score in a dominant display
Led by the extremely creative Joao Carvalho, Forest created a host of chances that they failed to convert.
First Sammy Ameobi's drive was beaten away by keeper Freddie Woodman after Carvalho's delightful flick, before Grabban turned the ball into the net from an offside position.
The woodwork also saved the Swans when Grabban hit the bar after anticipating Ben Watson's header dropping in the penalty area, before Samba Sow volleyed wide with five minutes remaining.
Swansea improved after the interval and might have gone ahead when Andre Ayew's header from Jake Bidwell's cross flashed across goal.
Joe Worrall fired at goal but saw his shot blocked as the visitors sought a winner, while Forest goalkeeper Brice Samba did well to handle a speculative shot from Ayew.
The Swans had scored 17 goals in their five previous home games this term but never really looked likely to break the deadlock, and with five minutes remaining they were caught on the counter-attack and Semedo tapped home.
Swansea manager Steve Cooper said:
"I don't think we did enough to win the game that's for sure, and that's probably the most frustrating bit.
"We have conceded. We made a mistake and conceded an awful goal really.
"I am not sure we deserved to lose either, but the main focus is that we did not do enough to win the game, which was the goal today.
"I think we had issues at the top end of the pitch. I think we had enough possession and good positions, but on the day we lacked a little bit of creativity, a little bit of risk-taking and a little bit of confidence to go and make a difference up there. Ultimately it cost us because we did not create enough good chances.
"Bouncing back is the only option. We are not going to cry, we are disappointed as we should be. But we have to get over it and get back to work."
Nottingham Forest boss Sabri Lamouchi said:
"I think we deserved this victory. It was so difficult to imagine this performance.
"We deserved to score maybe in the first half - one or two goals - and our goalkeeper didn't have a lot to do.
I want my players to play with the personality, no regrets and we were playing the best team in the league at this moment.
"We must think about Barnsley game now because we never win two games in a row. I have a nice group, they trust me and for the moment they are doing a good job.
"We are eight games and unbeaten and building momentum, but winning two games in a row is very important as we have not done that yet."
- 23RobertsBooked at 70mins
- 5van der HoornBooked at 90mins
- 22A Ayew
- 10CelinaSubstituted forByersat 58'minutes
- 15RoutledgeSubstituted forDyerat 75'minutes
- 9BastónSubstituted forSurridgeat 75'minutes
- 37AdomahSubstituted forLolleyat 59'minutes
- 21SowBooked at 64mins
- 10CarvalhoSubstituted forSilvaat 78'minutes
- 19AmeobiSubstituted forSemedoat 68'minutes
- James Linington
- Shots on Target
Second Half ends, Swansea City 0, Nottingham Forest 1.
Offside, Nottingham Forest. Samba Sow tries a through ball, but Lewis Grabban is caught offside.
Mike van der Hoorn (Swansea City) is shown the yellow card for a bad foul.
Foul by Mike van der Hoorn (Swansea City).
Lewis Grabban (Nottingham Forest) wins a free kick in the attacking half.
André Ayew (Swansea City) wins a free kick in the defensive half.
Foul by Ben Watson (Nottingham Forest).
Attempt missed. André Ayew (Swansea City) header from the centre of the box misses to the left. Assisted by Mike van der Hoorn with a cross.
Matt Grimes (Swansea City) wins a free kick on the left wing.
Foul by Lewis Grabban (Nottingham Forest).
Attempt blocked. Jake Bidwell (Swansea City) left footed shot from outside the box is blocked.
Goal! Swansea City 0, Nottingham Forest 1. Alfa Semedo (Nottingham Forest) right footed shot from the centre of the box to the top right corner. Assisted by Lewis Grabban following a fast break.
Corner, Swansea City. Conceded by Joe Lolley.
Connor Roberts (Swansea City) wins a free kick in the defensive half.
Foul by Tiago Silva (Nottingham Forest).
Substitution, Nottingham Forest. Tiago Silva replaces João Carvalho.
André Ayew (Swansea City) wins a free kick on the right wing.
Foul by Samba Sow (Nottingham Forest).
Substitution, Swansea City. Nathan Dyer replaces Wayne Routledge.