A goal in each half from Tommy Conway and Scott Twine saw Bristol City extend their unbeaten run to seven games with a 2-0 win over relegated Rotherham at Ashton Gate.
The home side took a 32nd-minute lead when Conway was brought down as he rounded goalkeeper Dillon Phillips. The striker got up to send Phillips the wrong way with a well-struck penalty for his 12th goal of the season.
Twine doubled the advantage with a superb 57th-minute free-kick, bent around to wall with his right foot from 25 yards.
Rotherham barely threatened, but stuck to their task gamely despite being clearly second best on the day.
An open first half began with City looking as though they might break through the centre of Rotherham’s defence at will. Conway had a low shot saved and Cam Pring fired over from distance.
Phillips made a brave save at the feet of Conway on 20 minutes before Rotherham suddenly sprang to life as attacking force. Tom Eaves broke through the middle only to be denied by a Max O’Leary.
The City goalkeeper was in action again seconds later, tipping over a powerful Hakeem Odoffin header from Oliver Rathbone’s right-wing corner.
Conway was proving a handful for the Rotherham back-line, seeing a shot saved on 29 minutes. When he broke clear again and took the ball around Phillips the keeper tripped him to concede a spot-kick.
It was dispatched with confidence as Conway matched his goal tally for last season. He had another close-range effort saved before the break, with Phillips keeping Rotherham in the game.
Twine was just too high with a free-kick from a narrow angle as City finished the first half well on top.
Rotherham made a change at the interval, sending on Grant Hall for Arvin Appiah and started well with Sebastian Revan shooting wide from a Cohen Bramall cross.
Soon City were back in the ascendency, James having a shot blocked inside the box before Twine’s sweetly-struck free-kick after he had been fouled spelt more misery for the Millers.
The home side were dominant as the impressive Twine volleyed wide from a cross by substitute Nahki Wells and then sent another long range effort wide.
Twine left the field to a rousing ovation when replaced by Andy King on 81 minutes and City head coach Liam Manning had the luxury of being able to give a debut to young winger Elijah Morrison in the closing stages.
Rotherham never gave up, Eaves heading a late chance wide, but lacked the quality to test a City team ending the campaign in some style.