A controversial penalty winner from Graham Burke infuriated Bohemians at Tallaght Stadium as Shamrock Rovers were somewhat fortuitous to snatch all three points in a cracking Dublin derby.
A fifth successive win over their arch rivals stretches the champions unbeaten league run to 29 games going back to 2019, though they do surrender top spot in the Premier Division table to St Patrick's Athletic on goal difference.
A fourth defeat of the season was tough for Bohemians to stomach as they deserved more having matched Rovers every inch of the way in an enthralling clash of Dublin's hig two.
Unhappy with his side's defending in Tuesday’s loss to Sligo, Bohemians manager Keith Long made three defensive switches in six overall changes to his side.
Despite the rejig at the back, Bohemians were exposed as early as three minutes before Rovers’ dominant start brought them a fifth minute lead.
James Talbot initially saved well with his feet from Burke after Aaron Greene and Danny Mandroiu combined to carve Bohemians open down the right.
Bohemians were at sixes and sevens at the back again two minutes later.
Dylan Watts found Liam Scales in far too much space on the left to cross. And though Greene’s flick rebounded off a post, Watts was there to volley home his second goal of the season.
Despite their bright start, Rovers should have been punished on 13 minutes as a glorious chance to equalise was missed.
The ball broke kindly to allow Keith Ward scamper clear on the Bohemians right. His low cross ran past Georgie Kelly in the middle to Liam Burt who rashly curled his shot wide.
That was soon forgotten, though, as Bohemians did level with a terrific goal six minutes later.
Burt’s back-heel found Ali Coote on the left. He spun to shake off the presence of Sean Hoare a little too easily to cross for Ross Tierney to head to the net at the back post.
In an open game now, Mandroiu shot into the arms of Talbot from a Watts corner, before Rovers should have regained the lead on 25 minutes.
Burke sent Mandroiu away on the left to get the return in space in the area. But he delayed in checking twice before his flicked shot was blocked by Rob Cornwall.
Bohemians remained well in the game; Burt and Coote setting up Kelly to work Alan Mannus just past the half hour.
That said, they should have been behind again on 35 minutes. Chris McCann surged forward to play Greene through one-on-one only for the striker’s composure to desert him as he shot tamely wide.
Bohemians started the second half on the front foot, signalling their intent with Keith Buckley shooting straight at Mannus two minutes in.
Though Rovers introduced Ronan Finn and Gary O’Neill to try to re-energise their midfield, Bohemians remained the better side since the resumption, coming inches from a deserved lead on 66 minutes.
The impressive Tierney did well on the left to deliver the ball across for Kelly who, stretching under pressure from Lee Grace, shot against the butt of a post.
But Bohemians were left fuming as the game turned in Rovers favour on 74 minutes.
Central defender James Finnerty was harshly adjudged to have pushed Mandroiu over as they raced into the area.
Referee Paul McLaughlin pointed to the spot before further incensing the visitors by showing Finnerty a straight red card.
Burke’s far from perfect penalty had enough in it to beat Talbot despite the goalkeeper getting a hand to the ball.
Shamrock Rovers: Alan Mannus; Sean Hoare, Roberto Lopes, Lee Grace; Sean Gannon (Ronan Finn 57), Chris McCann (Rory Gaffney 71), Dylan Watts (Gary O’Neill 64), Liam Scales; Danny Mandroiu, Aaron Greene, Graham Burke.
Bohemians: James Talbot; Andy Lyons, James Finnerty, Rob Cornwall, Tyreke Wilson; Keith Buckley, Ali Coote (Conor Levingston 80); Keith Ward (Ciaran Kelly 77), Ross Tierney, Liam Burt; Georgie Kelly
Referee: Paul McLaughlin (Monaghan).