Northampton’s bid to reach their first European semi-final since 2014 ended in failure in a superb European Challenge Cup game at Franklin’s Gardens.
Saints overcame the loss of three forwards to yellow cards in the first half to lead by eight points at half-time but Ulster’s dominance of territory and possession eventually told to run out deserved 35-27 winners.
Tommy Freeman scored two tries for Northampton. Alex Mitchell and Ollie Sleightholme scored the others, with Piers Francis kicking a penalty and two conversions.
Rob Herring, Jacob Stockdale, John Cooney and Marty Moore scored tries for Ulster. There was also a penalty try award, with Cooney adding four conversions.
Northampton took a fourth-minute lead with a try from Mitchell. A line-break from Taqele Naiyaravoro put the Ulster defence on the back foot with Mitchell on hand to dart over from close range.
In making the break, Naiyaravoro received a cut to his forehead and was replaced by Ahsee Tuala before Saints suffered a further setback when Nick Isiekwe was yellow carded for a high tackle on Billy Burns.
Ulster immediately capitalised to pick up a penalty try award with Sam Matavesi sin-binned for dragging down the driving line-out.
Despite being down to 13, Saints picked up the next score when Francis kicked a simple penalty but the home side were then subjected to a period relentless pressure.
Remarkably, they held out against a succession of driving line-outs but in order to do so they conceded repeated penalties.
Isiekwe returned but he was replaced in the sin-bin by David Ribbans as the lock dragged down a maul. Northampton’s stubborn resistance had to give and it did when Herring finished off another line-out drive.
Matavesi returned but Ribbans was still absent as Saints scored their second try when Freeman finished off a period of pressure to dot down in the corner.
Ribbans emerged from the bin to bring his side back to full strength and unbelievably Northampton scored a third try as Mitchell broke from inside his own half to leave Freeman with a 45-metre run-in for his second try.
Francis converted before Cooney surprisingly missed a 35-metre penalty to leave Ulster trailing 22-14 at the interval.
After the restart, Jacob Stockdale was held up over the line but Ulster maintained the pressure for Moore to force his way over from close range.
Saints’ disruption continued when the impressive Freeman limped off but they would not lie down, with Sleightholme sneaking over in the corner.
Back came Ulster with a close-range try from Cooney, with his conversion giving his side a one-point lead with 18 minutes remaining.
Slowly but surely, the Irish province increased their control on the match and they sealed victory when Burns sent Stockdale over.
Sign up to our mailing list for a weekly digest from the wide world of rugby.Sign Up Now