They started the scoring in the 16th minute when Lucas Joao showed strength and power to hammer home the opener.
Andy Rinomhota then scored on his 100th appearance for the club as he smacked it in the bottom right corner from the edge of the area.
Then Swift stepped up for a free-kick after Kyle McFadzean got a second yellow and fired it into the top right corner from 30 yards to cap off a magnificent victory for the home side.
The victory takes the Royals to third in the table, three points off the automatic spots, while this leaves Coventry City in 17th place.
Story of the match
Reading played arguably the strongest lineup they could have done with the injuries they had. They made one change from the 1-2 win at Huddersfield Town over two weeks ago, with Michael Olise starting ahead of Sone Aluko.
Coventry made two changes from their last league game, with Ben Sheaf and Matty Godden making way so that Matty James and Viktor Gyokeres could make their league debuts for the club, after signing on loan from Leicester City and Brighton and Hove Albion respectively.
The first chance of the game came from the away side in just the third minute, where Callum O'Hare forced a brilliant save from Rafael and a vital challenge from Tom McIntyre to keep it goalless, as he tried poking it in from close range.
Another big chance came for the visitors when Leo Ostigard glanced a header wide as he was found open from a set-piece.
Three minutes afterwards the Sky Blues were made to rue their missed chances when Reading took the lead through Joao, when John Swift floated the ball over the top, before he chested it down, holding off the defender before hitting the ball past the helpless Ben Wilson.
Reading then started to come into the game, with Ovie Ejaria nearly adding the Royals second when he cut in from the left-hand side and struck the near-post.
On the stroke of half time and Joao had nearly scored a double, but he put the ball narrowly wide from a Tom Holmes cross.
Thirty seconds into the second half and Reading had doubled their lead through Rinomhota, who scored on his 100th appearance for the club. Joao chased a ball down the right-hand side and played it across to the edge of the area for Rinomhota to strike home for his first goal this season.
Coventry then started to fight back and nearly scored when Ostigard found himself free yet again at the far post and he aimed the ball towards the top corner but a brilliant reflex save from Rafael denied the Norwegian.
However, their fightback was ended when McFadzean received a second yellow for taking down Ejaria. Swift stepped up from the resulting free-kick and smashed the ball into the top right corner from 30 yards out to add Reading's third of the night.
Substitute Sam Baldock then had the chance to make it four when he a poor pass allowed him to break through on goal, only for him to miss the target.
Coventry nearly scored a consolation when the ball came off the head of Max Biamou, but it bounced off the post.
Man of the match: John Swift (Reading)
The midfielder recently came back from injury but now seems to be back at his best with a fantastic performance.
He scored a brilliant third goal for the Royals and his ball to assist their first was excellent. A 10/10 performance from the midfielder.