Ulster secured the home win they needed against Bath to qualify for the Heineken Champions Cup quarter-finals for a second consecutive season.
It was all level at half-time, before Ulster turned the screw in the second period to seal a 22-15 victory.
It took only six minutes for Ulster to break the deadlock when, from an attacking five metre line-out, the forwards set up a driving maul.
The ball was dropped as it edged close to the line and Springbok number eight Marcell Coetzee picked up and powered over from close range with scrum half John Cooney adding the conversion.
Freddie Burns wasted the chance to open Bath’s account, missing a simple penalty from the Ulster 22.
Bath scored a try in the 18th minute thanks to Ruaridh McConnochie.
Following a sustained period of pressure in the Ulster 22 Freddie Burns put in a cross field kick, Jacob Stockdale misjudged the bounce allowing the winger to pick up and dive over the line with Burns landing the conversion from a tight angle.
Four minutes later Bath had flanker Tom Ellis sin binned for a push on John Cooney , but Ulster could not capitalise and it was all level at the interval.
Ulster got their second try a minute after the restart, Billy Burns offloaded out of a tackle to Will Addison who wrong-footed Gabe Hamer-Webb and drew the last defender before releasing winger Robert Baloucoune to dart over in the corner. Cooney added the extras.
WE ARE THROUGH TO THE KNOCK-OUT STAGES OF THE @ChampionsCup ! pic.twitter.com/A2wi9HFjak— Ulster Rugby (@UlsterRugby) January 18, 2020
Freddie Burns landed a long-range penalty for the visitors three minutes later after Sean Reidy was guilty of not rolling away.
Addison got Ulster’s third try in the 47th minute as Jacob Stockdale put the full-back into space to dot down. Cooney failed with the conversion.
Bath set up a tense finish by scoring a second try with 15 minutes remaining.
From a well worked five metre line-out replacement hooker Ross Batty was propelled over the line. Freddie Burns missed the conversion.
Lock Kieran Treadwell had a try disallowed for Ulster by the TMO in the 68th minute for a forward pass in the build up.
Batty was red-carded with eight minutes remaining for a no arms tackle on Cooney, Billy Burns slotted over the resulting penalty.
Ulster turned a kickable penalty down in the last minute to go for the corner, Bath stole the line out and Hamer-Webb broke out of defence getting to the halfway line before being stopped.