The defending champions from Cape Town - who halted a 15-match winning streak for Leinster - raced to a 17-0 lead after a bit more of half an hour of action, but the hosts came back strongly in the second half, and they could have won the game had their goal kicking been better.
The DHL Stormers had a strong first half, scoring two tries while playing with the wind, which saw them dominate the territorial and possession stakes.
Manie Libbok opened the scoring with a seventh minute penalty goal and the Springbok flyhalf stretched the DHL Stormers' lead to 10-0 after 20 minutes with a converted try.
Thirteen minutes later, it was 17-0 when Suleiman Hartzenberg scored the Capetonians' second try - also converted by Libbok - to put them firmly in control, only for Leinster to hit back with a late try by Michael Milne just before the break.
Leinster used the wind to their advantage in the second half, adding three more tries in the third quarter to take a 22-17 lead with 20 minutes to go.
The DHL Stormers had a few opportunities, but turnovers proved costly. One such example was after a great run from Hacjivah Dayimani, from a lineout turnover on their own line, but he was stopped just short and Leinster won a penalty.
The visitors took control later in the match when their pack took control, although they maybe overdid the high kicks into the wind in the second half. They pulled level when Clayton Blommetjies went over in the 70th minute from a sublime grubber by Libbok, with Hartzenberg in the sin bin.
Leinster had a final opportunity to seal the game, but Harry Byrne hit the upright with an attempted penalty goal in the 77th minute.
Leinster 22 (5) - Tries: Michael Milne, Scott Penny, Rob Russell, Max Deegan. Conversion: Harry Byrne.
DHL Stormers 22 (17) - Tries: Manie Libbok, Suleiman Hartzenberg, Clayton Blommetjies. Conversions: Libbok (2). Penalty goal: Libbok.