Connacht bounced back from their last-gasp defeat to Leinster to end the year with a bruising 21-12 Guinness PRO14 win over Ulster at the Sportsground.
Nineteen-year-old winger Angus Kernohan's 32nd-minute try from a Cian Kelleher fumble got Ulster back in the match following converted first-quarter scores from Shane Delahunt and Bundee Aki as the visitors trailed 14-7 at the break.
Caolin Blade and Jordi Murphy swapped second-half tries, the latter opening his Ulster account, but Connacht stood firm to record three successive victories over Ulster for the first time since the mid-1950s.
It was the hosts' defence which stood out early on as the covering Kelleher denied Henry Speight, making the final appearance of his Ulster loan spell, from a dangerous kick through, while Tom Farrell's ball-dislodging tackle on Louis Ludik led to Ulster coming under territorial pressure.
The Connacht pack won a maul turnover and a scrum penalty, duly carving out a 12th-minute try as all three front rowers carried, with hooker Delahunt barging over from close range.
Jack Carty converted and also added the extras to Aki's score, the centre crashing over as Nick Timoney and Marcell Coetzee desperately tried to haul him down.
Ulster had conceded two scrum penalties in the lead up to that second try, but they forced the issue on the half-hour mark in the greasy conditions.
Ian Nagle's lineout takes set up two maul opportunities. Connacht infringed on both occasions before Kelleher failed to gather Johnny McPhillips' cross-field kick and Kernohan touched down the loose ball.
John Cooney's experience of the Galway wind helped him to curl over a cracking conversion.
The westerners restored their 14-point lead just two minutes after half-time, though, Carty making sure he was first to Kyle Godwin's blindside chip and slipping a pass away for his half-back partner Blade to score to the left of the posts.
TMO Olly Hodges ruled it was 'not clear and obvious' that Carty was offside from the winger's kick, and the Athlone man converted for a 21-7 lead before failing with a long-range penalty from a scrum offence.
The influence of Rory Best, so vital off the bench in last week's home win over Munster, was very much missed by Ulster.
Beaten 22-15 at home by Connacht in October, the Ulstermen battled on, with an injury to Speight forcing them to bring a second scrum half on in a rejigged back-line.
Their resilient play was rewarded in the 67th minute with flanker Murphy's unconverted maul try in the left corner, just after Connacht replacement Ultan Dillane's sin-binning for repeated team penalties.
With all-action flanker Colby Fainga'a standing out as man-of-the-match for his line breaks, Connacht had the better of the closing stages, pushing for a late bonus point which eluded them due to handling errors and Ulster's robust defence.