| 1 | BASSON Gustav | Team DMS Pro Cycling | 02:23:02.000 | - | 44.046 |
| 2 | VAN DER MERWE Kimhan | | 02:23:02.000 | - | 44.046 |
| 3 | KLOPPER Christiaan | Martigues Sport Cyclisme Payden-Rygel | 02:23:02.000 | - | 44.046 |
| 4 | KIECK Blaine | | 02:23:02.000 | - | 44.046 |
| 5 | MULLER Sheldon | | 02:23:02.000 | - | 44.046 |
| 6 | RADEMAN-LUDEKE Travis | | 02:23:03.000 | 01.000 | 44.041 |
| 7 | LUBBE Joshua | | 02:23:03.000 | 01.000 | 44.041 |
| 8 | FOUCHE Herman | | 02:23:03.000 | 01.000 | 44.041 |
| 9 | VAN NIEKERK Emile | | 02:23:04.000 | 02.000 | 44.035 |
| 10 | SCOTT Bradley | | 02:23:04.000 | 02.000 | 44.035 |
| 11 | HAVENGA Brendan | | 02:23:04.000 | 02.000 | 44.035 |
| 12 | MAHLANGU Thokozani | | 02:23:05.000 | 03.000 | 44.03 |
| 13 | MARAIS Jacques | | 02:23:06.000 | 04.000 | 44.025 |
| 14 | WIESNER Daniel | | 02:23:07.000 | 05.000 | 44.02 |
| 15 | GEYSER Reinhardt | | 02:23:07.000 | 05.000 | 44.02 |
| 16 | LANDSBERG Stian | | 02:23:08.000 | 06.000 | 44.015 |
| 17 | COUTAUD Marius | | 02:23:08.000 | 06.000 | 44.015 |
| 18 | RHEEDERS Josh | | 02:23:08.000 | 06.000 | 44.015 |
| 19 | JORDAAN Jason | | 02:23:09.000 | 07.000 | 44.01 |
| 20 | FOUCHE Damon | | 02:23:09.000 | 07.000 | 44.01 |
| 21 | GUMEDE Siyanda Mthobeleni | | 02:23:09.000 | 07.000 | 44.01 |
| 22 | DOWNES Brandon | | 02:23:10.000 | 08.000 | 44.005 |
| 23 | HEYNS Erick Delport | | 02:23:10.000 | 08.000 | 44.005 |
| 24 | MERTZ Zander | | 02:23:10.000 | 08.000 | 44.005 |
| 25 | KRUGER Casper | Team Honeycomb Pro Cycling | 02:23:11.000 | 09.000 | 44 |
| 26 | MAIN Kent | Team DMS Pro Cycling | 02:23:12.000 | 10.000 | 43.994 |
| 27 | JOOSTE Chris | | 02:23:12.000 | 10.000 | 43.994 |
| 28 | JANSE VAN RENSBURG Gert | | 02:23:12.000 | 10.000 | 43.994 |
| 29 | HAMMON Keenan | | 02:23:13.000 | 11.000 | 43.989 |
| 30 | STEDMAN Alastair | | 02:23:14.000 | 12.000 | 43.984 |