A stunning set piece from John Swift capped a fine performance from the Royals that earned them all three points against ten-man City - Lucas Joao had opened the scoring in the first half before Andy Rinomhota had doubled the lead with a goal on his 100th appearance for the club.
The Royals survived an early scare when a Homes pass across his box was intercepted by O'Hare on the edge of the Reading area but Rafael was down well to his left to save and McIntyre was on hand to hack clear the loose ball.
A John Swift set piece was deflected high and away by the Sky Blues ball and both sides pressed high at the start of a high-tempo encounter.
Leo Ostigard could have broken the deadlock when a corner was taken short and swung into the box - the defender meeting the cross with his head but glancing wide from close range.
However, it was the hosts who took the lead when a ball over the top of the Coventry defence from Swift was controlled by Joao who had stayed onside. He brought the ball down, rode a challenge from the backdracking defender, and lashed the ball past Ben Wilson with a fine left-footed finish.
An attack down the right from Holmes and then Olise saw the ball work its way over to Ejaria on the left corner of the box. His low cross nearly skidded into the feet of Joao but the striker couldn't contol it and get a shot away.
Some Ejaria magic moments later nearly led to a second, only for the woodwork to deny the midfielder. He wormed his way into the box, cut back onto his right foot and drilled a low shot through bodies, past Wilson and against the base of the near post. So close to doubling the Royals' lead.
But City were causing problems of their own too - McIntyre needing to lunge in and clear a low cross from the right as Gyokeres threatened to latch onto it at the near post.
Joao very nearly got his second just before half-time - Holmes delivered a low cross that flashed across the City box and Joao slid in at the back post but couldn't direct the ball on target. Appeals for a shirt pull on the Royals striker by Ostigard fell on deaf ears.
Reading defended an injury time corner and went into the dressing room a goal to the good, courtesy of noneother than Lucas Joao.
Half-time: Reading 2-0 Coventry City
Less than a minute into the second half, Reading doubled their lead. Olise intercepted a Coventry pass at the back and fed Joao down the right side of the box. He did brilliantly to edge inside along the byline and cut the ball back for Ejaria who missed his kick. But the ball rolled back to Rinomhota who arrowed low inside the bottom right corner for 2-0 - scoring on what was hhis 100th appearance as a Royal!
Jordan Shipley took an instinctive shot at goal from 25 yards out but sliced his effort harmlessly wide of Rafael's goal. And Ostigard rose high to glance a header wide from a dangerous corner on the left as City sought a goal that would get them back in the game.
Ostigard came even closer just before the hour when a deep free kick from the right was powered goalwards by a towering header from the defender - Rafael palmed the ball to safety at his near post to deny the visitors a goal back.
Some sloppy defending almosty gifted Olise a golden chance to add a third but he was cynically brought down as he was about to pull the trigger - McFadzean's name taken by the referee for the trip on the edge of the area.
And McFadzean was shown a second yellow card with 20 minutes remaining, dragging Ejaria over as he strode onto another loose City pass at the back.
Swift punished the visitors doubly with an outstanding free kick that was swept into the top right corner - giving Wilson no chance of saving it and surely sealing victory for the Royals.
It was to be his last input in the game as he was replaced by Alfa Semedo moments later. And Dejan Tetek and Sam Baldock came into the game with little more than 10 minutes left on the clock.
Baldock had a glorious chance to score a fourth, scampering in behind a bedraggled City defence after Tetek had won the ball from an underhit pass between defenders. With only Wilson to beat, the striker dragged his shot just wide though.
The points were in the bag and the final stages were played out without major incident - although an injury time Biamou header bounced off the outside of the post and wide to deny the visitors a consolation.
Reading though gained valuable ground at the top of the table with a fine performance.
Full-time: Reading 3-0 Coventry City
Reading: Rafael, Holmes (Esteves HT), Richards, McIntyre, Morrison (c), Rinomhota (Baldock 78), Laurent, Swift (Semedo 73), Ejaria (Tetek 78), Olise (Aluko 65), Joao.
Unused subs: Southwood, East, Onen, Camara.
Yellow: Holmes, Joao
Goals: Joao 16, Rinomhota 46, Swift 72
Coventry City: Wilson, Ostigard (Thompson 87), McFadzean, O'Hare, Gyokeres (Biamou 59), Hyam, McCallum, Dabo (Dacosta 79), James (Sheaf 79), Shipley (Bapaga 87), Hamer.
Unused subs: Camp, Allen, Bakayoko, Kastaneer.
Yellow: McFadzean, Ostigard.
This match report was brought to you by WHATJOBS. Learn more at www.WHATJOBS.com