Reading’s unbeaten start to the Championship season finally came to an end after second-half goals from Matt Godden and Sam McCallum gave the Sky Blues victory.
Joao struck an equaliser from outside the box to cancel out Gustavo Hamer’s first half opener but Godden and McCallum netted to condemn Reading to their first league defeat under Veljko Paunovic despite a late goal from George Puscas.
The Royals are still six points clear at the top of the table despite defeat.
Going into the game as the unbeaten leaders, the Royals made one change after their 4-2 win at Blackburn Rovers as Sone Aluko came into the starting eleven to replace Yakou Meite.
Battling against a Coventry City side that have won just once in the Championship this season, the in-form Royals made the stronger start and almost broke through after just three minutes.
Coventry defender Fankaty Dabo played a risky pass across the box that almost back fired as Sone Aluko was inches away form intercepting the ball in the box and surely would have made them pay.
Reading’s first chance of the match came when Omar Richards and Michael Olise combined smartly down the left wing but Alfa Semedo smashed the ball high over the bar from just outside the box.
Coventry then had a sight of goal when Matt Godden rose above Liam Moore to win the header but it sailed just over Rafael’s crossbar.
Sone Aluko got in behind the Sky Blues defence and tried to find Olise at the back post for a tap in, but the ball took a slight deflection to take it away from the Frenchman’s path.
Lucas Joao has been in clinical form this season but was left rueing a missed chance in the 21st minute. He stole the ball from Coventry and broke into the box but his heavy touch didn’t allow him enough room to poke the ball over the keeper as it was blocked.
And Coventry made Reading pay with their first shot on target as Gustavo Hamer guided the ball into the bottom right corner from distance with a pinpoint finish.
It was an unfamiliar position for Veljko Paunovic’s side who went behind for the first time this season having conceded just their fourth goal in nine games.
The Sky Blues almost had a golden chance to double their fortunes when Godden slipped the ball through Max Biamou loose touch took the ball through to Rafael.
Two players went into the referee’s notebook as Ostigard slid in recklessly on Semedo before Hamer fouled Omar Richards.
The Royals had control of the ball for much of the half and had two speculative appeals for handball turned away just before the break but went in frustrated at half-time a goal down.
Reading should have been punished early in the second half when Olise sloppily gave away possession deep inside his own half to Godden but the Coventry forward rushed his shot and fired it high over the bar.
Lucas Joao had another chance to get on the scoresheet when Aluko’s inswinging cross was aimed towards the Portuguese striker, but Rose made got a vital touch to the ball with his head to take it away from Joao.
But Joao capitalised with his next sight of goal as he spun 20 yards from goal, shrugged off a defender and fired the ball low into the corner past the reach of the keeper as his excellent scoring form continued.
Coventry then missed a huge chance to re-take the lead in the 75th minute as Biamou hit the crossbar from just five yards out.
But just moments later, Godden pounced on the rebound of Dabo’s long shot as he dispatched the ball into the corner after Rafael could only parry the ball towards the striker.
George Puscas was called on from the bench in the 79th minute as Reading searched to level the game.
Aluko came close with a free kick which he bent around the wall but Coventry keeper Marosi got a hand to it to keep it out.
But it was the Sky Blues who wrapped the game up in the 85th minute when Sam McCallum struck from distance which beat Rafael after the Royals keeper made a mess of the shot.
Joao should have claimed a second in the 90th minute to set up a nervy finish for the hosts when he brought down the ball in the box and tried to cleverly loop the ball over the keeper but got his execution wrong.
But substitute Puscas found the back of the net in the second minute of added time from close range to set up an exciting finish to the match.
Despite the late goal, the Sky Blues held on for just their second win of the season.
The Royals host Preston North End on Wednesday evening at the Madejski Stadium (7pm kick off).
Coventry City: Marosi, Ostigard, Rose, Biamou, Sheaf, Hyam, Giles, Daro, Godden (c), Shipley, Hamer
Subs: Wilson, McFadzean, Kelly, Allen, O’Hare, Walker, McCallum
Reading: Rafael, Esteves, Morrison, Moore (c), Richards, Rinomhota, Laurent, Semedo, Olise, Aluko, Joao.
Subs: Southwood, Bristow, Watson, McIntyre, Gibson, Tetek, Puscas
Goals: Hamer 23′, Joao 66′, Godden 74′, McCallum 84′, Puscas 90+2′