Alex Codling’s men had Bristol rattled with 10 minutes to go, having fought back from 25-6 down to make it 25-20.
But Luke Eves managed to dive over in the corner in the 78th minute, securing a bonus point for Bristol and ending the Titans’ resistance in the process.
With London Scottish fighting back from 17-0 down to beat Cornish Pirates 20-17 in Penzance, Rotherham slipped to eighth. They are now nine points adrift of Bristol, who hold the last of the four play-off places.
Bristol bossed the early exchanges, which were notable for little other than a number of issues at the scrum, with the set-piece constantly being reset.
Bristol went 3-0 up in the 28th minute when Rotherham lock Ben Thomas was caught offside and Adrian Jarvis knocked over the penalty. Home winger George Watkins capitalised on good play from Ryan Edwards and Alafoti Faosiliva to score, despite the best efforts of Titans scrum-half Charlie Mulchrone. Jarvis kicked the hosts into an 11-0 half-time lead when he made the most of another scrum infringement to score from 25 metres out.
Codling, perhaps in response to the first-half scrummaging issues or lineout problems, changed his entire front row at half-time, sending on Jamie Kilbane, Gareth Denman and Ted Stagg. And they responded as Garry Law landed a penalty.
Titans then lost lock Dan Sanderson to the sin bin for tripping Bristol scrum-half Ruki Tipuna – and Edwards took Eves’ pass to score his team’s second try. A third Bristol try followed when referee Matt Carley awarded a penalty try, but that sprung Rotherham into action.
Replacement Ellyatt had only been on the pitch for four minutes when he took Mike Doneghan’s pass and score, after the home defence had been stretched. McKinney then found a gap to gather Doneghan’s pass and score. Law converted both but Eves had the final say.
Bristol: Tovey; Watkins, Otto (Roberts 71), Eves, Edwards; A Jarvis, Grindal (Tipuna 50); K Traynor (Douglas 60), Johnston (Lawrence 76), Cortes (Thompson 50), Sambucetti (B Glynn 50), Townson, Faosiliva (Mama 60), Pennycook, Eadie.
Rotherham: Law; Doneghan, Sheridan, Blackett (Nonu 64), Homan; McKinney, Mulchrone (Williams 68); Gadd (Kilbane 41), Hannan (Stagg 41), Davies (G Denman 41), Thomas, Sanderson, Freeman, Kirwan (Makaafi 57), Rieder (Ellyatt 64).
Referee: M Carley.