Match ends, Luton Town 0, Swansea City 1.
Swansea City climbed back into the Championship play-off places as Andre Ayew struck a late winner at struggling Luton Town.
Despite chances at both ends, an open first half somehow ended goalless.
Swansea dominated the second, with Ayew, George Byers and Bersant Celina among those to come close to scoring.
But with eight minutes left, Ayew chested in from Jay Fulton's deflected cross to score a fourth goal in his past three outings.
A second successive victory lifts Swansea up to sixth place in the Championship table, while Luton stay 21st, albeit now only one point clear of the relegation zone.
This was a 10th defeat for the Hatters from 13 league fixtures.
Despite that wretched recent record, however, they started positively against their higher-placed opponents on this occasion.
After Swansea's Byers had a shot saved by Simon Sluga, Luton enjoyed an extended spell of possession in the visitors' half.
Harry Cornick looked one of the home side's likeliest sources of a goal, seeing one shot excellently blocked by Tom Carroll and then firing another wide.
This was an open encounter, both teams aiming to keep possession and attack at a quick tempo but struggling to create chances of a high enough quality to truly test either goalkeeper.
In-form Ayew struck the side netting and then headed wide, before Luton's Andrew Shinnie came closest to a first-half goal with a shot which Freddie Woodman tipped over the bar.
It was a small wonder the game remained goalless at the interval, and Swansea made a strong start to the second half.
With Luton pinned back in their own penalty area, Swansea's Borja Baston, Ayew and Byers all found themselves in promising positions but were unable to find a finishing touch.
Steve Cooper's side were relentless in their pursuit of a winning goal and it finally arrived after 82 minutes, Fulton's deflected cross looping high and into the path of Ayew, who had the simple task of chesting into an empty net.
Luton manager Graeme Jones:
"The big moment is Harry Cornick going round the keeper, the ball comes back to George Moncur, the keeper's out of his goal and that was the moment we could have won the game.
"We've done very, very little wrong today and the boys have given absolutely everything and we got beat 1-0.
"I feel sorry for the lads today as we couldn't have given any more. We're just a little bit short at the moment."
Swansea manager Steve Cooper:
"It was an easy finish, but you've got to be there to do that and Andre's got a fantastic knack of being in the right place to score all types of goals and I was just glad he was there to nod it in.
"It was a well-earned victory though, I thought we were more than good for the three points, so I'm really glad that we got them as these games are so tight in the Championship.
"I thought we controlled the game from start to finish, we really handled coming here really well, the formation that they play, and we looked really good."
- 29ButterfieldSubstituted forMoncurat 61'minutes
- 8BerrySubstituted forTunnicliffeat 62'minutes
- 19CollinsBooked at 45mins
- 14CornickSubstituted forMcManamanat 74'minutes
- 5van der Hoorn
- 24BidwellBooked at 37mins
- 28ByersBooked at 79mins
- 14CarrollSubstituted forFultonat 75'minutes
- 22A Ayew
- 9BastónSubstituted forRoutledgeat 75'minutes
- 10CelinaSubstituted forNaughtonat 87'minutes
- David Webb
- Shots on Target
Second Half ends, Luton Town 0, Swansea City 1.
Attempt missed. Ryan Tunnicliffe (Luton Town) right footed shot from the left side of the box misses to the right. Assisted by Andrew Shinnie following a corner.
Corner, Luton Town. Conceded by Kyle Naughton.
Attempt blocked. George Moncur (Luton Town) right footed shot from outside the box is blocked.
Corner, Luton Town. Conceded by Jay Fulton.
Offside, Swansea City. Freddy Woodman tries a through ball, but Wayne Routledge is caught offside.
Offside, Luton Town. Ryan Tunnicliffe tries a through ball, but Sonny Bradley is caught offside.
Attempt blocked. Ryan Tunnicliffe (Luton Town) right footed shot from outside the box is blocked. Assisted by Andrew Shinnie.
Substitution, Swansea City. Kyle Naughton replaces Bersant Celina.
Foul by Wayne Routledge (Swansea City).
Pelly-Ruddock Mpanzu (Luton Town) wins a free kick in the defensive half.
Foul by Jay Fulton (Swansea City).
Ryan Tunnicliffe (Luton Town) wins a free kick in the defensive half.
André Ayew (Swansea City) wins a free kick on the right wing.
Foul by James Bree (Luton Town).
Goal! Luton Town 0, Swansea City 1. André Ayew (Swansea City) with an attempt from very close range to the high centre of the goal.
George Byers (Swansea City) is shown the yellow card.
George Byers (Swansea City) has gone down, but the referee deems it simulation.
Attempt blocked. George Byers (Swansea City) left footed shot from the centre of the box is blocked.