Match ends, Bristol City 1, Rotherham United 0.
Nine-man Rotherham United succumbed to pressure in the dying minutes as Bristol City scored a late goal to take the points at Ashton Gate.
Centre-half Adam Webster scored the winner as he headed home Jack Hunt's curling, further extending City's unbeaten run to seven matches.
The Millers had looked resolute in defence but Jones and Richie Towell were both sent to the changing rooms in the space of 10 second-half minutes.
Full-back Jones was booked twice for two mistimed challenges, while referee Scott Duncan gave Towell a straight red for a late lunge on Josh Brownhill.
Both sides had chances in an action-packed first half, but neither could break the deadlock.
Rotherham keeper Marek Rodak produced a reaction save in the opening stages of the game after Famara Diedhiou glanced Callum O'Dowda's corner at close range.
The visitors nearly took the lead shortly after, but winger Jon Taylor smashed his shot from a tight angle into the side netting and fired another wide shortly before half-time.
Both sides were evenly matched before Paul Warne's team were reduced in numbers by the loss of Jones and Towell.
City dominated possession for the rest of the game and their pressure eventually told when Webster broke the deadlock.
Midfielder Brownhill then forced Rodak into a diving save before hitting the woodwork moments before full-time.
The result left the Millers in the relegation zone, but only below Bolton on goal difference, while City are 11th in the Championship table.
Bristol City manager Lee Johnson told BBC Radio Bristol:
"I always believed that we would get the win or get the goal.
"I thought we have to give a lot of respect to the performance of Rotherham. They put their bodies on the line, I thought they worked their socks off.
"We knew how difficult a game it was going to be.
"My instinct if you're asking me the question now is the second (red card) was a little bit harsh. I think the two bookings one was pretty fair."
Rotherham United manager Paul Warne told BBC Radio Sheffield:
"I thought we were excellent to be fair today. We created good chances first half.
"I thought our game plan was really good. Obviously the sending offs changed the game but I thought when it was 11 against 11 we were the better team.
"I still think the best way to some up the game was the ball went out of play in like the 93rd minute and the fans didn't want to give it back to us which was ridiculous considering we had nine men.
"Our fans were brilliant, they stayed, clapped the team off, the lads gave everything today. I don't want the lads to think there's a crisis because there definitely isn't."
- 32HuntBooked at 44mins
- 3DasilvaBooked at 71minsSubstituted forEliassonat 77'minutes
- 11O'DowdaSubstituted forWeimannat 79'minutes
- 16AdelakunSubstituted forTaylorat 59'minutes
- 28JonesBooked at 64mins
- 11TaylorSubstituted forFordeat 83'minutes
- 13TowellBooked at 72mins
- 25WilesSubstituted forRaggettat 67'minutes
- 23WilliamsSubstituted forManningat 77'minutesBooked at 90mins
- Scott Duncan
- Shots on Target
Second Half ends, Bristol City 1, Rotherham United 0.
Ryan Manning (Rotherham United) is shown the yellow card for a bad foul.
Jamie Paterson (Bristol City) wins a free kick on the left wing.
Foul by Ryan Manning (Rotherham United).
Niclas Eliasson (Bristol City) wins a free kick on the left wing.
Foul by Michael Smith (Rotherham United).
Josh Brownhill (Bristol City) hits the bar with a right footed shot from outside the box. Assisted by Andreas Weimann.
Attempt missed. Andreas Weimann (Bristol City) right footed shot from the right side of the six yard box is just a bit too high.
Attempt saved. Josh Brownhill (Bristol City) right footed shot from outside the box is saved in the bottom right corner. Assisted by Famara Diedhiou.
Corner, Bristol City. Conceded by Marek Rodák.
Attempt saved. Jamie Paterson (Bristol City) left footed shot from outside the box is saved in the bottom right corner. Assisted by Josh Brownhill.
Jack Hunt (Bristol City) wins a free kick on the right wing.
Foul by Will Vaulks (Rotherham United).
Goal! Bristol City 1, Rotherham United 0. Adam Webster (Bristol City) header from the centre of the box to the bottom right corner. Assisted by Jack Hunt following a corner.
Corner, Bristol City. Conceded by Will Vaulks.
Attempt blocked. Jamie Paterson (Bristol City) left footed shot from a difficult angle on the left is blocked. Assisted by Matty Taylor.
Corner, Bristol City. Conceded by Marek Rodák.
Corner, Bristol City. Conceded by Sean Raggett.
Attempt blocked. Famara Diedhiou (Bristol City) header from the centre of the box is blocked. Assisted by Niclas Eliasson with a cross.