The home side dominated the scrums and that ultimately proved the difference in an entertaining contest between South Africa's two most likely challengers in Super Rugby this season.
"I'm happy with the result, but not so much our performance," Lions captain Warren Whiteley said at the post-match presentation. "We lost a lot of ball in contact and made it difficult for ourselves. We just couldn't finish.
"We know we need to up our performance if we are to get to the business end of this competition."
The Sharks led through an early try from Du Preez, but after that setback the Lions began to take control of the game and Mapoe ran an excellent line to scythe through the Sharks defence to score.
Even better was to follow when Dyantyi found space out wide, and his kick and chase was perfectly finished.
The Lions were completely dominant in the scrum, with the Sharks unable to win any of their first four set-pieces, starving them of ball with which to go forward as they trailed 14-7 at the break.
The Sharks scored next through Nkosi, but a thrilling break from Lions fullback Andries Coetzee set up the third try for the home side in a move that was finished by Mapoe. Coetzee turned villain from the kick-off, though, when he knocked the ball on to gift the Sharks a scrum which, now boosted in the front row by experienced Bok Tendai Mtawarira, they won, and Mapimpi crossed for an easy debut try.
But the home side extended their lead to seven points when Smith barged his way over the line from close range and despite the Sharks spending most of the remainder of the game in the Lions' 22, they could not find a score to level.
"The scrums disappointed us in the game. Holding the ball in contact was also disappointing," Sharks captain Ruan Botha said.
"You need to win your scrums and your lineouts or you can't launch, you can't attack. You can only play in the areas they give you."
Stormers 28 Jaguares 20
The Stormers have opened the Super Rugby season with a 28-20 win over Argentina's Jaguares, holding on in stages late in the game to ensure a winning start to 2018.
The Cape Town-based Stormers led the Jaguares 22-6 after tries by Springboks Damian de Allende, Siya Kolisi and Raymond Rhule, who scored his straight from the second-half kick-off.
While the Jaguares paid the price for losing fullback Joaquin Tuculet to a yellow card in the first half, the momentum was reversed when Stormers hooker Ramone Samuels went to the bin for slowing down Jaguares possession in the 65th.
That gave the Jaguares, who had already struck back once through winger Emiliano Boffelli, complete scrum dominance. It told three minutes later when they earned a penalty try as the Stormers scrum disintegrated close to the tryline, closing to 26-20.
The Stormers escaped under more pressure when its replacement front row, with centre de Allende packing down at flank to even the numbers, won a scrum penalty to stop another surge by the Jaguares.
The Stormers sealed it with a penalty on the final whistle by flyhalf Damian Williemse.