Lock George Skivington and centre Shane Geraghty scored the Exiles' other tries, with fly-half Ian Humphreys kicking 14 points.
Danny Cipriani scored 18 points for Sale with a try, three penalties and two conversions after out-of-favour Wales scrum-half Dwayne Peel's try gave the visitors an early lead.
Sale salvaged a losing bonus point with winger Charlie Amesbury's last-ditch try, converted by Cipriani.
Peel struck after only three minutes for Sale who had beaten Irish 21-9 at home in their previous match to record their first Premiership win of the season.
A floated cross field kick from Humphreys - aimed for winger Conor Gaston - flew straight into the arms of the scrum-half who set off on a 70-metre run down the right touchline.
Humphreys' misery was compounded when, after appearing to line up Peel, he missed his covering tackle before the Sale man crossed in the corner.
Former England utility back Geraghty, making an injury-delayed first full appearance after rejoining Irish from French club Brive during the close season, crossed the Sale line but was held up by weight of defensive numbers.
Cipriani, who had missed a difficult conversion after Peel's try, increased Sharks' lead with a 45-metre penalty.
Humphreys, looking to make amends, was prominent in a number of Irish attacks and they opened their account after he sliced through the Sale defence.
His offload in the tackle found Geraghty who was halted but, the ball was recycled quickly and Garvey's strength took him through two tackles and over the line, with Humphreys adding the conversion.
Sale suffered two more blows in the space of a minute. Flanker Andy Powell, like Peel discarded by Wales, limped off after half an hour, to be replaced by Kearnan Myall.
Humphreys kicked Irish in front with an angled 45-metre penalty, however Cipriani's boot put Sale back in the lead after the Irish scrum was penalised three minutes before half-time.
And just 60 seconds later Cipriani finished off a fine move with a try in the corner.
Full-back Rob Miller began the move as right-wing Charlie Amesbury exploited some poor defending to take it on before Millar was involved again, releasing Cipriani on his run for the line. The fly-half added the extras from out wide on the right.
Cipriani kicked Sale further ahead with his third penalty four minutes into the second half, but Irish hit back with their second try seven minutes later.
Hooker Brian Blaney found Ojo, who manoeuvred round the outside before turning the ball back to Skivington.
The locks' strength took him through the Sale defence for his first try since joining the Exiles from Leicester in the summer, leaving Humphreys a simple conversion.
Irish went ahead with Garvey's second try after Humphreys fared better with another floater into the corner. This time he found his intended target and the flanker drove over. Humphreys converted from the touchline to put his side 24-21 ahead.
Irish finished with a flourish as Humphreys landed a 76th minute penalty before converting a late try from Geraghty, put into space by 19-year-old replacement hooker Gerard Ellis on his debut.
But Amesbury finished off the last move of the match and Cipriani converted to make sure Sale did not go home empty-handed.