Danny Grant scored a brilliant hat-trick to edge Bohemians to within three points of securing European football next season as Shelbourne paid the penalty at Tolka Park.

Bohemians' boss Keith Long got the performance he wanted following last week's lacklustre display, despite beating Derry City, to reduce the gap back to eight points behind leaders Shamrock Rovers at the top of the Premier Division table with four games to play.

The Gypsies simply had too much for Shelbourne in this first north Dublin derby in Drumcondra in seven years.

Shelbourne were left to rue a missed penalty at 1-0 down that could have turned the game as they still look anxiously over their shoulder.

It’s eight games without a win now for Ian Morris’ Reds who remain third bottom of the table.

Though enjoying all the possession, Bohemians had to work hard to penetrate Shelbourne’s well-organised, dogged defence early on.

It was 18 minutes before a marauding run by Kris Twardek stretched the home side for the first time.

The Canadian got away from Alex O’Hanlon and Luke Byrne down the right to cross. Dan Byrne was well positioned to make the clearance with Andre Wright lurking.

Colin McCabe was worked for the first time on 22 minutes, Wright turning adroitly to shake off two defenders, though his shot lacked the power to trouble the Shelbourne keeper.

The home goal remained under siege as Dan Byrne again defended well to block a shot from the Bohemians striker after Dawson Devoy created the opening with some neat footwork on the left.

The pressure told on 29 minutes, even if it emanated from a counter.

Right-back Andy Lyons broke up a Shelbourne attack on the left. The loose ball found Wright in a central position who cleverly waited to thread his pass through for the galloping run of Grant.

The winger outpaced Luke Byrne to draw McCabe and find the bottom corner with a composed finish.

Grant celebrates his first goal

A mistake by Sheppard should have brought a second Bohemians goal four minutes later. 

The Shelbourne winger was relieved that Gypsies' skipper Keith Buckley failed to get any venom into his shot to trouble McCabe who saved comfortably.

Despite being on the back foot for much of the half, Shelbourne might have been level four minutes before the interval with their first opening of the night.

Ciaran Kilduff cleverly sprung the visitors’ offside trap onto Mark Byrne’s precise through ball.

Having had precious little to do up till then, James Talbot had kept his concentration and was out promptly to make a fine save with his body from the striker’s angled drive.

Shelbourne started the second half with purpose, Mark Byrne shooting wide minutes in.

That was broken up by a cameo from Grant who left Georgie Poynton for dust in midfield, worked a one-two with Devoy to rifle off target.

But Shelbourne reminded the better side since the resumption.

Mark Byrne had a shot blocked out for a corner while Denzil Fernandes got in a header that was straight at Talbot from an Alex O’Hanlon cross before wasting a glorious chance to deservedly level on 67 minutes.

Rob Cornwall was booked for pulling down Dan Byrne inside the area to concede a penalty. But Talbot dived the right way to brilliantly save Poynton’s spot kick.

A mistake by Poynton six minutes later resulted in Bohemians getting their second goal.

Wright caught the Shelbourne right-back in possession to set up Grant who calmly curled his right-footed shot home off the far post.

The hat-trick arrived on 80 minutes, Grant following up to find the far corner after Wright’s shot been parried by McCabe.

Poynton redeemed his penalty miss with Shelbourne’s consolation goal two minutes from time when heading home a Dayle Rooney cross.

Shelbourne: Colin McCabe; Georgie Poynton, Dan Byrne, Luke Byrne, Alex O’Hanlon; Gary Deegan, Sean Quinn; Denzil Fernandes (Shane Farrell 76), Mark Byrne (Ryan Brennan 71), Karl Sheppard (Dayle Rooney 71); Ciaran Kilduff (Aaron Dobbs 76).

Bohemians: James Talbot; Andy Lyons, Rob Cornwall, Dan Casey, Anto Breslin;  Keith Buckley (JJ Linney 87), Conor Levingston (Ross Tierney 69); Kris Twardek, Dawson Devoy (Keith Ward 76), Danny Grant; Andre Wright (Danny Corcoran 87).

Referee: Rob Harvey (Dulin) 6.