Match ends, Sheffield Wednesday 1, Bristol City 0.
Sheffield Wednesday climbed to third in the Championship as an 85th-minute penalty saw them beat Bristol City and extend their unbeaten run to six games.
Barry Bannan sent Robins keeper Daniel Bentley the wrong way from the spot to settle a largely drab encounter.
The midfielder was given the chance after Tommy Rowe had pushed over Atdhe Nuhiu just inside the box.
The visitors chased an equaliser but Wednesday held firm to inflict a third straight defeat on Lee Johnson's team.
His players will surely feel hard done by that their latest loss hinged on a controversial decision by referee Tony Harrington, although with just one shot on goal they did not deserve to win the game at Hillsborough.
Having twice turned down half-hearted appeals from Jordan Rhodes earlier in the second half, referee Harrington pointed to the spot when Rhodes' strike-partner Nuhiu tumbled over easily and appeared to look in his direction more in hope than expectation.
The match always seemed as if it could be settled by a moment such as that, with both sides struggling to carve out clear-cut chances.
The best opportunity of a forgettable first half came inside 15 seconds when City winger Callum O'Dowda dragged narrowly wide from close range.
Garry Monk's team edged the remainder of the opening period, and started the second half with far more urgency.
Before the break, defender Liam Palmer had an effort blocked on the line and after the restart it was he who denied former Owls full-back Jack Hunt in similar fashion when the home side were well on top.
That was the visitors' only real chance, with keeper Bentley denying Wednesday on several occasions after half-time.
But he did not get close to saving Bannan's spot-kick as the experienced Scot calmly passed the ball into the bottom corner to extend his side's unbeaten run and move them to within eight points of the automatic promotion places.
Bristol City stay eighth, two points adrift of the play-off positions.
Sheffield Wednesday boss Garry Monk told BBC Radio Sheffield:
"I'm very pleased with the attitude and the belief.
"You've got to stay focused and concentrated and you'll get the rewards in the end. I think if you go back a couple of months maybe we wouldn't have been able to do that.
"It was good to see from our perspective that we did that and forced mistakes from them in the second half.
"I think if you look overall, the first half was very tight, we ground it out, but overall it was a deserved victory."
Bristol City boss Lee Johnson told BBC Radio Bristol:
"It's not a penalty, it's as simple as that, and that's disappointing because it's a third party if you like who's influenced the result.
"We weren't great in terms of our quality but we defended pretty resolutely and that's the frustrating thing.
"After two losses you come to Hillsborough, get a 0-0, a clean sheet, and really build off the positives of that.
"Now we go into the Charlton game and it's three losses on the spin but this one wasn't down to us."
- 3FoxSubstituted forBörnerat 30'minutes
- 21LuongoBooked at 70minsSubstituted forPelupessyat 90'minutes
- 7K Harris
- 6RhodesSubstituted forWinnallat 76'minutes
- 1BentleyBooked at 84mins
- 2HuntSubstituted forEliassonat 61'minutes
- 7SmithBooked at 11mins
- 25RoweSubstituted forSemenyoat 86'minutes
- 14WeimannSubstituted forPalmerat 61'minutesBooked at 81mins
- 31Ríos Lozano
- Tony Harrington
- Shots on Target
Second Half ends, Sheffield Wednesday 1, Bristol City 0.
Foul by Atdhe Nuhiu (Sheffield Wednesday).
Josh Brownhill (Bristol City) wins a free kick in the attacking half.
Foul by Sam Winnall (Sheffield Wednesday).
Korey Smith (Bristol City) wins a free kick in the defensive half.
Foul by Liam Palmer (Sheffield Wednesday).
Niclas Eliasson (Bristol City) wins a free kick on the right wing.
Attempt missed. Barry Bannan (Sheffield Wednesday) left footed shot from outside the box misses to the left.
Substitution, Sheffield Wednesday. Joey Pelupessy replaces Massimo Luongo.
Atdhe Nuhiu (Sheffield Wednesday) wins a free kick on the right wing.
Foul by Ashley Williams (Bristol City).
Corner, Sheffield Wednesday. Conceded by Ashley Williams.
Substitution, Bristol City. Antoine Semenyo replaces Tommy Rowe.
Goal! Sheffield Wednesday 1, Bristol City 0. Barry Bannan (Sheffield Wednesday) converts the penalty with a left footed shot to the bottom left corner.
Daniel Bentley (Bristol City) is shown the yellow card.
Penalty Sheffield Wednesday. Atdhe Nuhiu draws a foul in the penalty area.
Penalty conceded by Tommy Rowe (Bristol City) after a foul in the penalty area.
Corner, Sheffield Wednesday. Conceded by Daniel Bentley.
Attempt saved. Barry Bannan (Sheffield Wednesday) left footed shot from outside the box is saved in the top right corner.