© Getty Images
The home side were ahead just a couple of minutes after kickoff as Rob Cook found some space on the flank to power over in the corner, but Billy Twelvetrees missed the conversion in what proved to be difficult kicking conditions.
A chip forward from the visiting side soon set Neville Edwards up for a try down the other end, but the home side were able to edge back in front as Twelvetrees split the uprights with a couple of penalties before the interval.
After Edwards added a second for Sale, Gloucester started to dominate possession, resulting in Sione Kalamafoni powering over in the corner to level the scores.
It took the number eight just a couple of minutes to add another, with Greig Laidlaw setting Kalamafoni up for the home side's third of the night.
Danny Cipriani made it close late on with a penalty for the visitors, cutting Gloucester's lead to four points, but the Sharks never recovered from Kalamafoni's quick-fire brace.
The result lifts Gloucester up to sixth in the table, while Sale slip to seventh.