Bath made it six wins from as many games in all competitions with a bonus point 40-16 victory against London Irish.
- Related Content
Looking a far more fluent outfit than the side that stuttered through the first half of the season, they saw off the Irish challenge with two tries in the last five minutes, the last coming in the final play of the game from prop Anthony Perenise.
Replacement fly-half Tom Heathcote converted all four tries and also kicked two penalties.
The other Bath scores were a Donald penalty, a penalty try and touchdowns by Nick Abendanon and Nathan Catt.
It was quite a comedown for the Exiles after their victory over Saracens last weekend but they were undermined by a penalty count of 18-5 - and three yellow cards.
The only bright moment was a thrilling breakaway try by replacement scrum-half Jack Moates but the defeat leaves them back in the relegation dogfight.
The break in the RBS 6 Nations programme saw Paul James (Wales) and Davey Wilson (England) released by their respective countries after bench duty had restricted their time on the field in recent weeks.
Bath were otherwise unchanged from the winning line-up against Worcester last weekend while London Irish named the same team that defeated Saracens.
The Bath pack laid down a marker straight from the kick-off as Dave Attwood stole a line-out and the home forwards drove forward, winning a penalty.
Donald's kick was just wide from nearly 50 metres.
Irish continued to give away penalties but took advantage of a misdirected throw by Rob Webber to escape up field where Tom Homer opened the scoring with a penalty after 11 minutes.
The full-back added another within a couple of minutes for an unlikely 6-0 lead.
Donald quickly pulled back three points for Bath when Tom Biggs was tackled high by Topsy Ojo. Donald went off injured shortly afterwards, replaced by Tom Heathcote.
Homer missed an easy kick by his standards but Bath then lost their captain, Francois Louw, to a hip injury too.
They quickly shrugged that off, however, earning a penalty try on the half hour when Ojo again tackled Biggs by the neck - and this time collected a yellow card. Heathcote converted.
Five minutes later and direct from a line-out the home side struck again.
Heathcote attacked going right and his perfectly flighted pass gave Abendanon just enough space to slide over in Marland Yarde's grasp.
The fly-half added the conversion from wide out but Homer landed a third penalty for a half-time score of 17-9.
The Exiles' pack had been under pressure in the first half and conceded a scrum penalty on the resumption - and then another at the breakdown, which Heathcote converted.
Still the penalty count mounted and Homer was the second to see a yellow for a cynical hand on the floor and Heathcote's penalty made it 23-9.
Ojo, back on the field, made a try-saving tackle on Abendanon after the Bath full-back lost his support on a 70-metre break from his own 22 as the game broke up.
The Bath pack was fully in command by the hour mark but contrived to spill the ball over the line after driving 15 metres from a line-out.
Then just as it seemed the life was being squeezed out of the Irish challenge, they responded with a remarkable try after 63 minutes.
Ian Humphreys dummied his way out of the 22, found Moates in support and the replacement scrum-half sent Yarde on a 60 metre run to the Bath 22.
Humphreys was on his shoulder to send Moates over in the corner and the fly-half knocked over the conversion to make it a one-score game.
Bath then spurned a simple penalty at the other end but were held under the posts.
Irish defended the scrum bravely and were rewarded when Ben Skirving eventually knocked on.
When handed another penalty under the posts Bath did the sensible thing and called up Heathcote to kick the goal as replacement back row Jon Fisher became the third Exiles player to go to the bin.
Bath wrapped up the victory after 76 minutes when Nathan Catt forced his way over, with Heathcote adding the conversion for a 33-16 lead.
Perenise's try was the icing on the cake.