Replacements used: Finlay Gilles (Currie) for Milligan (50 mins), Alan Dymock (Heriot's) for McNeil (54), Nick Campbell (Glasgow Hawks) for McKay, Andy Dunlop (Ayr) for Weston (both 60). Not used: Andy Dymock (Dundee), Matt Scott (Currie), Harry Duthie (Dundee).
Replacements used: Gerry Hurley (Cork Constitution) for D'Arcy (48 mins), Liam Og Murphy (Young Munster) for Donnellan, Damian Hall (St. Mary's College) for Hogan (both 62), Ger Slattery (Young Munster) for Sweeney (70). Not used: Ciaran Kavanagh (Clontarf), Alan Kingsley (Young Munster), Stuart Morrow (Ballynahinch).
Ireland adopted a cohesive pick-and-drive game and it proved a winning tactic for the visitors, whose four tries were all from close range.
Yet, it was Scotland who looked winners when they moved into a 20-3 lead late in the second half with two tries from centre Ross Curle. Both conversions were kicked by Scott Wight, who also landed two penalty goals.
Curle and Wight had the hosts in front before O'Mahony's men could respond. The game was barely a minute old when Dean Kelbrick blocked an attempted clearance from Keeshan and his midfield partner Curle picked up the loose ball to score a converted try.
Keeshan struck a post with an eighth minute penalty and his opposite number Scott Wight took Scotland's lead out to 10-0 when landing the first of two penalty attempts.
Ireland fell further behind in the 22nd minute when Wight kicked his second successful penalty of the night, punishing hooker Richie Sweeney who was sin-binned.
Despite being down to 14 men, Ireland began asking questions of Scotland, but their attempts to play a wider game were frustrated by mishandling and poor stewardship of the ball.
Then, with the return to the pitch of Sweeney, the Irish forwards mounted an assault on the Scotland try-line.
The Scots defence held firm but at the expense of a yellow card for scrum half Richard Sneddon. That gave Keeshan an easy kick at goal and the first points for Ireland, in wet conditions.
But it was only a temporary reprieve for the visitors as Keeshan was dispossessed by Kelbrick under a high ball.
The Hawks centre managed to get the ball away to Curle who, for the second time in the match, had a simple run to the line. Wight added the extras.
But, a minute before half-time, Ireland hit back in timely fashion. From a penalty-created lineout, Frank Cogan and his pack drove well to set up lock Simon Crawford for an unconverted try, leaving the visitors trailing 20-8 at the break.
The score seemed to lift Ireland for the second half and they quickly took control of the forwards battle to put the Scots on the ropes.
The pressure told in the 48th minute when from a penalty, number 8 and captain Cogan took matters into his own hands with a quick tap and a dash to the line for his side's second try, which was converted by Keeshan.
The pick-and-drive tactics were working for Ireland and after battering the Scotland line with eight phases of short range driving, the Scottish defence were unable to stop Crawford crossing for his second try. Keeshan's successful conversion made it 22-20.
Penalty goals by Wight and Keeshan, the latter after replacement Andy Dunlop was sin-binned, kept the Irish advantage at two points.
Then when Ireland kicked to the corner from another penalty award the driving maul score was inevitable. This time replacement hooker Ger Slattery claimed the touchdown.
The conversion followed from Keeshan and with six minutes left on the clock, it was Ireland's game to lose.
A final effort by Scotland produced a close range try by Damien Kelly. The conversion was tagged on by Wight, but it was too late to affect the final result as Ireland's club players celebrated their maiden win on Scottish soil.
They will be back in action next Friday when they host England Counties at Anglesea Road (kick-off 5.30pm), hoping to gain revenge for a 29-25 defeat at Stourbridge RFC last year.
Referee: Stefano Penne (Italy)