The DHL Stormers scored four tries in the second half to pick up a 30-16 bonus point win at DHL Stadium and book a place in the Heineken Champions Cup play-offs.
Having trailed by three points at half-time, it was a convincing display in the second 40 minutes to finish the pool stages on a high.
The first half was a tense affair, with defence dominating on both sides and a high penalty count making it difficult for either attack to create any momentum.
The visitors were first to score through flyhalf Anthony Bellau and he added a second penalty before the DHL Stormers had any points on the board.
The home side did manage to cut that lead in half when flyhalf Kade Wolhuter landed a penalty from just inside his own half just before the break, so there was not much in it at half-time, with ASM Clermont Auvergne leading 6-3 after a tryless opening 40 minutes.
The teams traded penalties early in the second half before the visitors were reduced to 14 when Bellau was shown a yellow card for deliberately batting the ball into touch.
Evan Roos had just taken the field on his comeback and he powered over for the first try to give the DHL Stormers a 13-9 lead.
Herschel Jantjies was also on as a replacement and was on hand to score the second as the DHL Stormers took control of the game.
They followed that up with a third from centre Dan du Plessis, who took a great offload from Joseph Dweba to shoot through and take the lead out to 25-9.
The French side scored a try of their own when wing Bautista Delguy intercepted in his 22 and raced away to score.
The DHL Stormers had the bonus point wrapped up shortly afterwards when Deon Fourie scored from a maul. There was a late yellow card for Sacha Feinberg-Mngomezulu for a high tackle, but the defence held out well for a 30-16 win.
For DHL Stormers:
Tries: Roos, Jantjies, D Du Plessis, Fourie
Cons: JL Du Plessis 2
Pens: Wolhuter 2
For ASM Clermont Auvergne:
Pens: Bellau 3
DHL Stormers: 15 Damian Willemse, 14 Suleiman Hartzenberg, 13 Ruhan Nel, 12 Dan du Plessis, 11 Angelo Davids, 10 Kade Wolhuter, 9 Stefan Ungerer, 8 Hacjivah Dayimani, 7 Willie Engelbrecht, 6 Deon Fourie, 5 Marvin Orie, 4 Connor Evans, 3 Neethling Fouche, 2 Joseph Dweba, 1 Steven Kitshoff (captain).
Replacements: 16 JJ Kotze, 17 Ali Vermaak, 18 Brok Harris, 19 Ben-Jason Dixon, 20 Evan Roos, 21 Herschel Jantjies, 22 Jean-Luc du Plessis, 23 Sacha Feinberg-Mngomezulu.