An 81st-minute header from substitute Marley Watkins gave Bristol City a 1-0 Championship victory over Sheffield United at Ashton Gate in a match that did credit to both teams.

The goal ended a similar run by the visitors, who lost nothing in defeat at the end of a closely-fought game.

United had the better of a first half full of attacking intent. But it was City who almost struck first on four minutes when Niclas Eliasson's shot was parried by Dean Henderson and Jay Dasilva volleyed wide from the rebound.

As the visitors got into their stride, Billy Sharp teed up David McGoldrick on the edge of the box for a shot that was badly miscued wide.

An Oliver Norwood free-kick from a narrow angle flashed across City's goal on 25 minutes, with a defender deflecting it out for a corner.

The best chances were falling to McGoldrick who shot wide again following a Tomas Kalas error and then glanced a header the wrong side of a post from another Norwood free-kick.

City finished the first half as they had begun it, with Famara Diedhiou heading over from Dasilva's far-post cross. It had been 45 minutes of high-tempo football, both sides getting men forward at every opportunity.

United came out firing again for the second period and some poor defending allowed John Lundstram to get in a right-footed curling shot, which did not carry enough pace to beat Niki Maenpaa.

By the hour mark home boss Johnson had seen enough and made a double change, sending on Watkins and O'Dowda for Dasilva and Eliasson.

Blades manager Chris Wilder quickly responded with two substitutions of his own as Marvin Johnson and Conor Washington took over from Mark Duffy and Sharp.

City created their best chance to date on 70 minutes when Diedhiou for once escaped the attentions of United's impressive back line only to mishit his right-footed volley wide.

There was an even better opportunity moments later as Watkins rose unmarked to meet a Lloyd Kelly cross, only to mistime his header.