Former Swan Gylfi Sigurdsson came back to haunt his old club as Everton fought back from a goal down to claim victory at Goodison Park.
The Swans had started brightly on Merseyside, with Leroy Fer directing home Tom Carroll's corner after 35 minutes to put Paul Clement's side ahead.
The visitors, who saw Wilfried Bony replaced after just five minutes due to injury, saw the lead slip through their hands on the stroke of half-time.
Roque Mesa's foul on Aaron Lennon saw referee Jon Moss point to the spot. Wayne Rooney's penalty was pushed onto the post by Lukasz Fabianski, but Dominic Calvert-Lewin fired home the rebound.
The Swans were still plugging away, but it was Sigurdsson who popped up with a bit of magic to edge Everton ahead.
With 64 minutes on the clock, he cut inside from the left and fired a trademark right-footed effort just inside the far post and past the outstretched Fabianski.
To make matters worse, Everton were awarded another penalty with 17 minutes remaining as Martin Olsson clipped Jonjoe Kenny's heels. The Swans, and Olsson, were left frustrated as television replays confirmed the foul took place outside of the box.
Rooney stepped up once again, and this time he fired home to give Everton a two-goal lead.
It was a lead they would not surrender, with defeat leaving the Swans bottom of the table with 12 points from 18 games.
Everton: Jordan Pickford, Jonjoe Kenny, Ashley Williams, Mason Holgate, Cuco Martina, Idrissa Gueye, Morgan Schneiderlin (Tom Davies, 61), Gylfi Sigurdsson, Aaron Lennon (Ademola Lookman, 79), Wayne Rooney (capt, Sandro Ramirez,89), Dominic Calvert-Lewin.
Subs: Joel Robles, Phil Jagielka, Michael Keane, Nicola Vlasic.
Swans: Lukasz Fabianski, Kyle Naughton, Federico Fernandez (capt), Alfie Mawson, Martin Olsson, Roque Mesa, Leroy Fer, Tom Carroll (Sam Clucas, 81), Nathan Dyer (Jordan Ayew, 74), Luciano Narsingh, Wilfried Bony (Tammy Abraham, 5).
Subs: Kristoffer Nordfeldt, Mike van der Hoorn, Angel Rangel, Renato Sanches.