Burnley came from a goal down to beat Bristol City and nudge their rivals closer to Championship relegation.
The visitors took the lead against the run of play when Albert Adomah collected a Steven Davies pass, rounded keeper Lee Grant and slotted in.
Jason Shackell headed home to equalise and Burnley took the lead when Chris McCann drilled in a left-foot strike.
The Robins saw a Davies penalty saved by Grant, before Martin Paterson volleyed in a third for Burnley.
The defeat leaves Bristol City eight points from safety with five games to go, with Burnley eight points from the play-offs in 11th.
The Turf Moor side started strongly but failed to take their chances and were punished when Adomah became the first City player to score away from home in the league since New Year's Day.
But the Robins' defence looked vulnerable and they eventually let in an equaliser when Shackell was allowed to head in after the visitors failed to clear a corner.
McCann finished a well-worked passing move to put Burnley ahead, before a Joseph Mills foul on Adomah gave Bristol City a chance to level from the penalty spot.
However, Grant dived to his right to save from Davies.
Bristol City's defeat was confirmed when Paterson volleyed home in the 90th minute, earning Burnley only a second win in 13 games.
Burnley manager Sean Dyche:
"That was as dominant a display as I have seen from us this season - we had 25 efforts on goal and I very much enjoyed our performance.
"We played with good ingenuity, organisation and freedom and even when we found ourselves behind at half-time we stayed calm.
"We always knew we could win the match. We made good use of the ball and managed the game well.
"All in all it was a very pleasing day for me, the team and the fans that backed us again and helped galvanise us as a group."
Bristol City goalscorer Albert Adomah:
"I scored a goal and won a penalty for the team and if that had gone in the result could have been different and we might have come away with a point.
"We always back Steven to put them away but it just didn't happen for him because the keeper made a great save.
"If we had won then we could have kept up with the teams above us but it is not over yet and we have to stay positive because we still have five games to keep ourselves in this division."