Match ends, Bristol City 2, Sheffield Wednesday 0.
Tommy Rowe's second-half finish teed up victory over previously unbeaten Sheffield Wednesday and maintained Bristol City's 100% start to the Championship season.
The Owls, whose 12-point deduction for breaching financial rules means they remain bottom of the table on minus eight points, edged a tight first half of few chances.
But City played with greater tempo after the break and were rewarded just before the hour, Rowe skilfully sliding the ball past Cameron Dawson from Chris Martin's cushioned header.
The Robins, who go joint top of the table with Reading after three matches of the new season, remained in control after taking the lead but both sides still struggled to create openings.
Kadeem Harris had the best opportunity for the visitors but failed to make a clear connection with a tricky bouncing ball.
City wrapped up the points in injury time, Jamie Paterson cutting in from the left and curling a shot into the far corner.
- Bournemouth overcome Norwich to stay unbeaten
- Relive the action from Bristol City v Sheffield Wednesday
The Owls will rue not making more of an impressive first half which saw Massimo Luongo and Barry Bannan dominant in the midfield and Harris unable to convert a couple of half-chances, notably when he scuffed an effort wide from a fine Elias Kachunga cross.
However, City's steady improvement saw them seize control after the interval and soon led to a well-worked opener, Rowe grabbing the first league goal Wednesday have conceded so far this season from a typically alert assist by former Derby striker Martin.
The home side, with Nahki Wells and Andreas Weimann continuing to cause problems, saw out a first win over the Owls following four consecutive defeats when Paterson's measured strike found the bottom corner in the 93rd minute.
City's victory means they have won their opening three matches to a league season for the first time since 2001-02 in the third tier. They last did so in the second tier in 1927-28.
Bristol City boss Dean Holden: "It's three wins from three and, particularly with Covid-19 causing so much distress, I would not want to deprive our supporters of something to smile about.
"But inside the club the feeling is only to focus fully on the next game. I have had managers call me already telling me to enjoy it and I will do that, without getting carried away in any sense.
"The lads have taken on board what we want from them. Wednesday were the better side in the first half if I am honest, but we tweaked a few things at the break and the first goal changed the game."
Sheffield Wednesday boss Garry Monk: "We were the better side in the first half and created some good chances without being able to take them. When you do that in a game, you know that good teams are going to come back at you at some stage.
"We knew it was going to be a tight match against opponents in good form and had we scored when on top it might have been a different story.
"But we couldn't quite get our noses in front and you need things to go right for you in front of goal. Now it is all about how we react to our first defeat and we must do so positively."
- 2HuntSubstituted forS Sessegnonat 90'minutes
- 10PatersonBooked at 44mins
- 30BakinsonBooked at 34mins
- 7MartinSubstituted forDiédhiouat 90'minutes
- 21WellsSubstituted forSemenyoat 81'minutes
- 43S Sessegnon
- 4van Aken
- 2PalmerSubstituted forRhodesat 84'minutes
- 7K HarrisBooked at 71mins
- 24BrownSubstituted forDele-Bashiruat 68'minutes
- 45KachungaSubstituted forReachat 74'minutes
- Tony Harrington
- Shots on Target
Second Half ends, Bristol City 2, Sheffield Wednesday 0.
Foul by Famara Diédhiou (Bristol City).
Joost van Aken (Sheffield Wednesday) wins a free kick on the left wing.
Goal! Bristol City 2, Sheffield Wednesday 0. Jamie Paterson (Bristol City) right footed shot from the centre of the box to the bottom right corner. Assisted by Tommy Rowe.
Corner, Bristol City. Conceded by Joost van Aken.
Antoine Semenyo (Bristol City) wins a free kick on the left wing.
Foul by Dominic Iorfa (Sheffield Wednesday).
Andreas Weimann (Bristol City) wins a free kick in the attacking half.
Foul by Josh Windass (Sheffield Wednesday).
Substitution, Bristol City. Steven Sessegnon replaces Jack Hunt.
Substitution, Bristol City. Famara Diédhiou replaces Chris Martin.
Attempt missed. Fisayo Dele-Bashiru (Sheffield Wednesday) left footed shot from the left side of the box misses to the right following a corner.
Corner, Sheffield Wednesday. Conceded by Jack Hunt.
Substitution, Sheffield Wednesday. Jordan Rhodes replaces Liam Palmer.
Attempt missed. Antoine Semenyo (Bristol City) left footed shot from the right side of the box misses to the right. Assisted by Jamie Paterson with a headed pass.
Jack Hunt (Bristol City) wins a free kick in the defensive half.
Foul by Kadeem Harris (Sheffield Wednesday).
Substitution, Bristol City. Antoine Semenyo replaces Nahki Wells.
Andreas Weimann (Bristol City) wins a free kick in the defensive half.