Oumar Niasse came off the bench to score two goals in nine second half minutes to put the home side in command, and Marco Silva’s men held on to record the victory after Alfie Mawson headed a late reply for the Swans.
Silva made two changes to his starting eleven with Omar Elabdellaoui and Abel Hernandez given starts. Ahmed Elmohamady and Niasse dropped to the bench where they were joined by Curtis Davies on his return from injury.
Swansea created the first chance of the game eight minutes in when a lovely pass from Jack Cork had Wayne Routledge in behind the home defence, but Eldin Jakupovic came off his line to narrow the angle and diverted a low shot wide.
Tom Huddlestone had the Tigers’ first shot of the game, but his effort from 25 yards was easily saved by Lukasz Fabianski.
A foul on Hernandez gave the home side a free kick in a dangerous position in the 27th minute, but the shot from Sam Clucas was blocked by the defensive wall before Kamil Grosicki saw a weak shot saved by Fabianski.
The Swansea goalkeeper was the busier of the two and he did well to punch a Grosicki cross away just ahead of Hernandez arriving at the back post. It came at a cost to Fabianski, who was injured in a collision with the Tigers’ front man but he was cleared to continue after treatment.
Clucas saw a looping header land on the roof of the net and Swansea lost striker Fernando Llorente to injury as the half ended goalless, with Alfred N’Diaye and Martin Olsson booked in added time after ‘handbags’ were exchanged between the pair.
Huddlestone’s shot was saved by Fabianski early in the second half as the Tigers looked to get on the front foot, but some wasteful deliveries from wide areas meant that the Swansea defence was looking fairly comfortable.
At the other end, Routledge fired high over the bar from eight yards after Jakupovic had only diverted Tom Carroll’s low cross into the Swansea man’s path before Huddlestone was booked for a foul on Cork.
Jakupovic pushed a Gylfi Sigurdsson free kick wide before the Tigers made their first change with Niasse replacing N’Diaye.
The change worked a treat as Silva’s men took the lead on 69 minutes. Elabdellaoui brought the ball out from the back with pace before finding Niasse down the touchline. Niasse knocked the ball inside for Hernandez and when the Uruguayan returned the pass over the top of the Swansea back line, the substitute was through on goal, keeping his cool inside the box to produce a calm finish past Fabianski.
Lazar Markovic was harshly booked for a foul on Olsson moments later, giving Swansea a free kick in a wide position deep in home territory although it was defended well at the near post before Markovic was replaced by Elmohamady.
The Tigers doubled their lead in the 78th minute. Elmohamady chipped a ball in from the right, Hernandez just about managed to flick it into the path of Niasse and he did the rest with another composed finish for 2-0.
That assist was the final contribution from Hernandez, who was replaced by David Meyler a couple of minutes later.
Niasse went for his hat-trick five minutes from time, but could only drag a low shot wide after being teed up by Grosicki.
A tense finish was in store when Mawson pulled a goal back for the Swans in the first of four added minutes, but the Tigers held on for the win.
Hull City: Eldin Jakupovic, Omar Elabdellaoui, Andrea Ranocchia, Harry Maguire, Andy Robertson, Alfred N’Diaye (Oumar Niasse 63), Tom Huddlestone, Sam Clucas, Lazar Markovic (Ahmed Elmohamady 75), Kamil Grosicki, Abel Hernandez (David Meyler 81).
Subs Not Used: David Marshall, Curtis Davies, Shaun Maloney, Adama Diomande.
Swansea City: Lukasz Fabianski, Alfie Mawson, Federico Fernandez, Angel Rangel (Jordi Amat 33), Martin Olsson, Jack Cork, Leroy Fer, Tom Carroll, Gylfi Sigurdsson, Fernando Llorente (Jordan Ayew 45), Wayne Routledge (Luciano Narsingh 71).
Subs Not Used: Kristoffer Nordfeldt, Stephen Kingsley, Leon Britton, Borja.
Referee: Mr A. Marriner.
Attendance: 19,195 (416 Visiting Supporters)