Swansea City were left to rue missed chances and being denied a penalty as Isaiah Jones’ first-half strike gave Middlesbrough the spoils at the Riverside Stadium.
Jones raced clear after being left in too much space to score what proved to be the winner in the 26th minute.
But the visitors had more than enough opportunities to take something from the game, with Jamie Paterson, Matt Grimes and Joel Piroe going closest, with the latter denied by a goal-line clearance from Paddy McNair.
The Swans felt they should also have had a penalty after Boro keeper Luke Daniels appeared to bring down Paterson on the stroke of half-time, only for the referee to award a free-kick against the Swansea man.
There had been two changes from defeat to Reading as Ben Cabango and Korey Smith came in for Ryan Bennett and Olivier Ntcham, who dropped to the bench.
The Swans started smartly, with plenty of zip and crispness to their passing, and they nearly took a seventh minute lead.
Ryan Manning was worked into space down the left, and his deflected cross caught out keeper Daniels but struck the top of the crossbar.
Duncan Watmore fired over at the other end after the hosts had picked off a loose pass in midfield, while Grimes made a fine covering challenge on the forward to cut out a key pass.
The Swans were then unable to take either of a pair of big chances just past the 20-minute mark.
First Piroe had a shot blocked from Manning’s intelligent cutback, with the Swans having handball appeals waved away.
Then Paterson was sent in on goal by Grimes, but his final effort was over the bar.
And no sooner had Swansea missed those chances then the hosts took the lead.
Jones was found in acres of space down the right, and was able to drive into the area unchallenged and fire past Ben Hamer.
Swansea quickly got back on the front foot, Daniels parrying a firm drive from Manning seconds after Sol Bamba had been fortunate not to be penalised when he appeared to bring down Piroe with the Dutchman ready to receive a pass in on goal.
But the hosts could have doubled their lead five minutes before the break as the Swans were caught sleeping by a short corner routine that ended with Hamer doing well to deny Watmore from close range.
However, Swansea felt they should have had a chance to level from the penalty spot right at the end of the half but for a poor decision from referee Andy Davies.
Piroe sent Paterson through on goal and he appeared to be brought down by Daniels as he rounded the keeper, but the Swans midfielder was instead penalised himself as the official decided he had dived.
It only added to the visitors’ frustrations at the end of a half they had started strongly but where they had not capitalised on a number of promising positions.
Martin sent on Ntcham for Smith at the break and the Swans came within inches of levelling seven minutes after the restart.
Kyle Naughton started a fine attack and his lovely slide-rule pass found Piroe’s clever run.
The striker beat Daniels after getting round him, but Paddy McNair produced a brilliant clearance to prevent the ball finding the net.
Piroe was soon involved again, turning away from Sol Bamba in the area, only for the defender to recover well and block the forward’s shot.
Ethan Laird fired straight at Daniels after shuffling in from the right flank, just before Michael Obafemi was sent on in place of Rhys Williams.
Grimes had a free-kick tipped over while, at the other end, Ntcham produced a sensational challenge to deny Watmore, before Hamer pushed away a Bamba header.
Swansea kept pressing, Cabango heading straight at Daniels from a Naughton cross, and Piroe lifted over after getting away his marker at the back stick.
But it was not to be for the visitors.
Middlesbrough: Luke Daniels, Anfernee Dijksteel (Dael Fry 90), Marcus Tavernier, Andraz Sporar (Uche Ikpeazu 72), Jonny Howson (captain), Paddy McNair, Duncan Watmore (Onel Hernandez 72), Sol Bamba, Matt Crooks, Marc Bola, Isaiah Jones.
Unused Substitutes: Joe Lumley, Neil Taylor, Martin Payero, James Lea Siliki.
Swansea City: Ben Hamer; Ben Cabango, Kyle Naughton, Rhys Williams (Michael Obafemi 67); Ethan Laird (Joel Latibeaudiere 78), Flynn Downes, Matt Grimes (captain), Ryan Manning; Korey Smith (Olivier Ntcham 46), Jamie Paterson; Joel Piroe.
Unused Substitutes: Steven Benda, Ryan Bennett, Liam Cullen, Jake Bidwell.
Referee: Andy Davies