|Gloucester (7) 20|
|Try: Halaifonua, Vellacott Con: Twelvetrees 2 Pen: Twelvetrees 2|
|Sale (9) 16|
|Try: MacGinty Con: MacGinty Pen: MacGinty 3|
Tries from David Halaifonua and Ben Vellacott and the boot of Billy Twelvetrees saw Gloucester grind out victory over Sale at Kingsholm.
Gloucester's tries came either side of half-time as they held off a spirited Sale to protect their unbeaten home record and remain fourth in the table.
AJ MacGinty kicked the visitors into a half-time lead with three penalties.
His second-half try saw Sale regain the lead but despite late pressure, they only took home a losing bonus point.
- Relive Saturday's Premiership rugby action
- READ MORE: Harlequins 50-21 Northampton
- READ MORE: London Irish 15-20 Newcastle
- READ MORE: Saracens 46-31 Worcester Warriors
Sale could have moved into the Premiership's top six with a win but they narrowly failed to build on last week's thumping home victory over Bath.
They had hope of a sixth victory of the season as MacGinty gave them a second-half lead after Gloucester failed to defend a line-out on their 22.
But Gloucester's stronger bench proved crucial as the Cherry and Whites extended their winning run at home this season.
Halaifonua went over in the left corner for Gloucester's first try before Vellacott, on his first Premiership start, collected a bouncing ball to spin and score shortly after the break.
And Twelvetrees' two second-half penalties were enough for clinch Gloucester's eighth win of the season.
Gloucester head coach Johan Ackermann told BBC Radio Gloucestershire:
"I'm grateful that we got over the winning line. The less said, the better because again our error rate and the number of basic mistakes we made was just too high.
"Some guys really stepped up and made the vital turnovers when needed.
"It's good to end 2017 on a win. We're happy where we are in the table but we're not happy with our game. There's a lot of room for improvement."
Sale director of rugby Steve Diamond:
"It was always going to be tight and the first half went very well but we didn't take our chances.
"We gave away silly penalties and the pitch was heavy, we are not used to playing on a surface like that and it sapped our energy levels.
"I was disappointed with parts of our play but they had a big pack of forwards who were backed by a large crowd and they controlled the game better."
Gloucester: Marshall; Sharples, Twelvetrees, Symons, Halaifonua; Burns, Vellacott; Hohneck, Hanson, Afoa, Savage (capt), Thrush, Ackermann, Ludlow, Morgan.
Replacements: Hibbard, Orr, Balmain, Slater, Clarke, Braley, Trinder, Woodward.
Sale: O'Connor; Solomona, James, Janse van Rensburg, McGuigan; MacGinty, De Klerk; Harrison, Webber, John, Evans, Ostrikov, Ross, B Curry, Strauss.
Replacements: Jones, Flynn, Aulika, Nott, Neild, Cliff, Haley, Yarde.
Referee: Andrew Jackson (RFU).