Leeds led 6-3 at the break through a Gordon Ross drop and penalty.
But Sale went ahead when Valentin Courrent capitalised on good work by Epi Taione to surge over for a try and then slotted over a drop goal.
Rob Vickerman's try, Lionel Faure's dismissal for punching and then Robert Todd's departure to the sin bin created a tense finale but Sale held on.
Leeds director of rugby Phil Davies:
"We showed a lot of courage and character in certain aspects of the game. "We need to build on aspects of our performance. We opened them up on a couple of occasions.
"There's plenty to get our teeth into, that's for sure."
Leeds: De Marigny; Doherty, Vickerman, Snyman, Biggs; Ross, Marshall; Lensing, Bulloch, Gerber; Morgan, Palmer; Dunbar, Parks, Thomas.
Replacements: Rawlinson for Bulloch (58), Murphy for Palmer (58), Crane for Dunbar (49).
Not Used: Isaacson, McMillan, Jones, Rees.
Sale: Larrechea; Ripol, Todd, Robinson, Seveali'i; Courrent, Martens; Coutts, Titterrell, Stewart; Schofield, Day; White, Lund, Bonner-Evans.
Replacements: Taione for Seveali'i (20), Mayor for Courrent (57), Faure for Coutts (50), Turner for Stewart (57), Anglesea for Bonner-Evans (56).
Not Used: Briggs, Wigglesworth.
Sin Bin: Todd (77).
Sent Off: Faure (75).
Referee: Dave Pearson (RFU)
Att: 4,206