Connacht made it back-to-back victories in the PRO12 after they overcame rivals Ulster 30-25 at the Sportsground on Friday.
First-half tries from Jack Carty, Cian Kelleher and James Connolly put Connacht in the driving seat, until a Conor Carey yellow allowed Ulster the chance to get back into it.
Craig Gilroy cut the lead down for Ulster, before Jared Payne and Rory Best drew the visitors level.
Kelleher restored the hosts' lead, and they were finally able to hold on for the 30-25 win at Sportsground.
Ulster were able to call on Tommy Bowe, who made his first start in six months, but Connacht started the stronger. The hosts opened their account for the evening just a couple of minutes in, with Carty finishing a strong attack that was started by Dave Heffernan. The Athlone born kicker added the extras with ease, stamping his mark straight onto the game.
Ulster cut the deficit down quickly after the restart though, Paddy Jackson taking advantage of an infringement at the ruck to reduce the arrears.
The sell-out crowd was being treated to an intriguing spectacle in the first 20 minutes, with the hosts defending well after Ulster went through a series of phases.
Connacht doubled their tries with 15 minutes of the half to play thanks to Kelleher. The hosts had to do their fair share of backs to the wall work, but patience in the build-up eventually allowed Tiernan O'Halloran to spread possession wide, with the former Leinster youngster going over. The conversion struck the posts, but a nine point lead was well deserved.
And inside the opening half hour, it got even better. Barely a minute after try number two, the third arrive via Connolly. Kelleher went from scorer to provider, bursting forward and getting his side within metres of the line, with Connolly the man to go over. Carty converted, and the hosts had a 19-3 lead.
A yellow to Carey followed though, coming after a succession of fouls, which allowed Ulster back into the game. The visitors first try followed immediately, Gilroy claiming the ball after Connacht lost possession metres from their line, with Jackson squandering the conversion.
Carty raised that lead just a little more with a penalty, as Connacht went in 22-8 to the good.
Still a man up, Ulster got their second try in the opening minute of the second 40. A quick start saw Best drive his way over, with Jackson's extras putting Ulster within a converted try of drawing level.
Carey returned following the kick, but with the score at 22-15, it was a far tighter match than when he was sin-binned. All Connacht's hard-work in the first 40 was wiped out within five minutes of the restart, as Ulster got their second try in four minutes and drew level in the process. A line-out saw Ulster burst down the middle, and captain Payne inflicted further damage, with the conversion making it 22-all.
But the frantic second half took another twist 11 minutes into it, as Connacht retook the lead. Kelleher grabbed his second of the night after a maul, with the phases eventually allowing possession to go out wide, Kelleher finding the line. Carty missed, but the bonus point was secured.
Atoning for that miss, the Connacht 10 slotted a penalty through which took the lead back into double figures.
Jackson kept it tight though, bringing the gap back down to just five with 15 left to play.
Jackson and his men really piled the pressure on in search of victory, temporarily setting up camp metres from the try line. But the chance for that late try was dealt a crucial blow when it was the turn of Ulster to lose a man. Ross Kane's sin-binning with five to go came after an off the ball challenge, letting Connacht see out the remainder of the game and inflict Ulster's first defeat of the season in the process.
Tries: Carty, Kelleher, Connolly
Cons: Carty 2
Tries: Gilroy, Best, Payne
Cons: Jackson 2
Connacht: 15 Tiernan O’Halloran, 14 Niyi Adeolokun, 13 Bundee Aki, 12 Craig Ronaldson, 11 Cian Kelleher, 10 Jack Carty, 9 Caolin Blade, 8 John Muldoon (c), 7 Jake Heenan, 6 Eoin McKeon, 5 Andrew Browne, 4 Ultan Dillane, 3 Conor Carey, 2 Dave Heffernan, 1 Finlay Bealham
Replacements: 16 Shane Delahunt, 17 Ronan Loughney, 18 JP Cooney, 19 Lewis Stevenson, 20 James Connolly, 21 Stephen Kerins, 22 Shane O’Leary, 23 Stacey Ili
Ulster: 15 Jared Payne (c), 14 Tommy Bowe, 13 Louis Ludik, 12 Darren Cave, 11 Craig Gilroy, 10 Paddy Jackson, 9 Paul Marshall, 8 Roger Wilson, 7 Clive Ross, 6 Iain Henderson, 5 Pete Browne, 4 Robbie Diack, 3 Rodney Ah You, 2 Rory Best, 1 Callum Black
Replacements: 16 Rob Herring, 17 Andrew Warwick, 18 Ross Kane, 19 Kieran Treadwell, 20 Sean Reidy, 21 Dave Shanahan, 22 Brett Herron, 23 Rob Lyttle
Referee: Gary Conway (IRFU)
Assistant Referees: Dudley Phillips, Leo Colgan (both IRFU)
TMO: Peter Fitzgibbon (IRFU)