| 1 | GIBBONS Ryan | Lidl - Trek | 02:10:30.000 | - | 44.598 |
| 2 | JANSE VAN RENSBURG Reinardt | China Glory - Mentech Continental Cycling Team | 02:10:30.000 | - | 44.598 |
| 3 | TERLOUW Jaedon | | 02:10:31.000 | 01.000 | 44.592 |
| 4 | VAN NIEKERK Emile | TEG Procycling Team | 02:10:31.000 | 01.000 | 44.592 |
| 5 | MILLER Alex | Team Cathy | 02:10:31.000 | 01.000 | 44.592 |
| 6 | DE COMARMOND Aurelien | Océane Top 16 | 02:10:31.000 | 01.000 | 44.592 |
| 6 | DE COMARMOND Aurelien | Team MCB | 02:10:31.000 | 01.000 | 44.592 |
| 7 | BENEKE Calvin | | 02:10:32.000 | 02.000 | 44.586 |
| 8 | HOFMEYR Wynand | | 02:10:32.000 | 02.000 | 44.586 |
| 9 | KROS Eric | | 02:10:32.000 | 02.000 | 44.586 |
| 10 | STEHLI Felix | Team Vorarlberg | 02:10:32.000 | 02.000 | 44.586 |
| 11 | BOTHA Wessel | | 02:10:32.000 | 02.000 | 44.586 |
| 12 | VAN DER MERWE Nicholas | U19 Academy Région Sud powered by Giant | 02:10:32.000 | 02.000 | 44.586 |
| 13 | RADEMAN-LUDEKE Travis | | 02:10:32.000 | 02.000 | 44.586 |
| 14 | ROLLER Gustav | ACROG-Tormans | 02:10:32.000 | 02.000 | 44.586 |
| 14 | ROLLER Gustav | Team On Track | 02:10:32.000 | 02.000 | 44.586 |
| 15 | PRITZEN Marc Oliver | Team Honeycomb Pro Cycling | 02:10:33.000 | 03.000 | 44.581 |
| 16 | STEDMAN Travis | Q36.5 Continental Team | 02:10:33.000 | 03.000 | 44.581 |
| 17 | CLAASSEN Aidan | | 02:10:33.000 | 03.000 | 44.581 |
| 18 | HAVENGA Brendan | | 02:10:34.000 | 04.000 | 44.575 |
| 20 | MOOLMAN Warren | TEG Procycling Team | 02:10:35.000 | 05.000 | 44.569 |
| 21 | ORMISTON Callum | Global 6 United | 02:10:35.000 | 05.000 | 44.569 |
| 22 | DOWNES Brandon | TEG Procycling Team | 02:10:43.000 | 13.000 | 44.524 |
| 23 | CRAUSE Pedri | Brocar - Rali - Alé | 02:10:45.000 | 15.000 | 44.512 |
| 24 | MAIN Kent | RKC Collective | 02:10:52.000 | 22.000 | 44.473 |
| 25 | BARNES OLIVIER Carter | Picusa Academy | 02:11:37.000 | 1:07.000 | 44.219 |
| 26 | MOIR Luke | | 02:12:14.000 | 1:44.000 | 44.013 |
| 27 | VAN DER WATT Daniel | | 02:12:14.000 | 1:44.000 | 44.013 |
| 28 | LOUBSER Daniel | | 02:12:17.000 | 1:47.000 | 43.996 |
| 29 | VAN ZYL Johann | | 02:12:37.000 | 2:07.000 | 43.886 |
| 30 | KLEINSMIT Jose | | 02:12:37.000 | 2:07.000 | 43.886 |
| 31 | ENGELBRECHT Carlo | | 02:12:38.000 | 2:08.000 | 43.88 |
| 32 | LUBBE Joshua | | 02:12:38.000 | 2:08.000 | 43.88 |
| 33 | DU PLESSIS Jean-Pierre | | 02:12:39.000 | 2:09.000 | 43.875 |
| 34 | KIECK Blaine | TEG Procycling Team | 02:12:41.000 | 2:11.000 | 43.864 |
| 35 | SYMM Matthew | Team On Track | 02:12:44.000 | 2:14.000 | 43.847 |
| 36 | BASSON Gustav | CR4C Roanne | 02:12:44.000 | 2:14.000 | 43.847 |
| 37 | DIKE Joshua Ethan | TEG Procycling Team | 02:13:48.000 | 3:18.000 | 43.498 |
| 38 | VAN DER WESTHUIZEN Theuns | CYMOT Racing Team | 02:15:07.000 | 4:37.000 | 43.074 |
| 39 | GOOSEN Lood | | 02:15:08.000 | 4:38.000 | 43.069 |
| 40 | STEENKAMP Alwyn | TEG Procycling Team | 02:15:09.000 | 4:39.000 | 43.063 |
| 41 | JOOSTE Chris | RKC Collective | 02:15:09.000 | 4:39.000 | 43.063 |
| 42 | NORTJE Tristan | Team Honeycomb Pro Cycling | 02:15:09.000 | 4:39.000 | 43.063 |
| 43 | KRUGER Casper | Team Honeycomb Pro Cycling | 02:15:09.000 | 4:39.000 | 43.063 |
| 44 | LANGE Tyler | | 02:17:16.000 | 6:46.000 | 42.399 |
| 45 | GELDENHUYS Hanro | | 02:17:17.000 | 6:47.000 | 42.394 |
| 46 | HANEKOM Jaques | | 02:17:17.000 | 6:47.000 | 42.394 |
| 47 | TROTZKY Johann | | 02:17:18.000 | 6:48.000 | 42.389 |
| 48 | BOSHOFF Jordan | | 02:17:18.000 | 6:48.000 | 42.389 |
| 49 | SCHUTTE Ryno | TWC Tempo - Hoppenbrouwers-Viro | 02:17:18.000 | 6:48.000 | 42.389 |
| 50 | SITOZA Othando | Velokhaya Exinity | 02:17:18.000 | 6:48.000 | 42.389 |
| 51 | MASEMOLA Rodney | | 02:17:19.000 | 6:49.000 | 42.384 |
| 52 | SCHOLTZ Kevin | RAF Buddy NamedSPORT | 02:17:19.000 | 6:49.000 | 42.384 |
| 53 | TYAPA Ongeziwe | | 02:17:20.000 | 6:50.000 | 42.379 |
| 54 | COUTAUD Marius | | 02:17:20.000 | 6:50.000 | 42.379 |
| 55 | MACHABA Matome | | 02:17:22.000 | 6:52.000 | 42.368 |
| 56 | LANDSBERG Stian | Cannibal - Victorious U19 Development Team | 02:17:22.000 | 6:52.000 | 42.368 |
| 57 | MAHLANGU Thokozani | | 02:17:22.000 | 6:52.000 | 42.368 |
| 58 | KOTZE Daniel | | 02:17:26.000 | 6:56.000 | 42.348 |
| 59 | SALZWEDEL Zane | Team On Track | 02:17:29.000 | 6:59.000 | 42.332 |
| 60 | IVANOV Borislav | PSKK Vassil-Levski | 02:19:49.000 | 9:19.000 | 41.626 |
| 61 | JOHANNES Willem | | 02:19:55.000 | 9:25.000 | 41.596 |
| 62 | BONTEKONING Keagan | | 02:19:56.000 | 9:26.000 | 41.591 |
| 63 | GORDON Alan Munro | | 02:19:56.000 | 9:26.000 | 41.591 |
| 64 | DYASI Iva | Velokhaya Exinity | 02:19:56.000 | 9:26.000 | 41.591 |
| 65 | MUZI Shabangu | | 02:19:56.000 | 9:26.000 | 41.591 |
| 66 | METSING Omolemo | | 02:19:58.000 | 9:28.000 | 41.581 |
| 67 | WAGENER Raymond | | 02:19:58.000 | 9:28.000 | 41.581 |
| 68 | BEKKER Rossouw | | 02:20:01.000 | 9:31.000 | 41.566 |
| 69 | DU PLOOY Rohan | RKC Collective | 02:20:02.000 | 9:32.000 | 41.562 |
| 70 | BOTES Wyatt | | 02:22:45.000 | 00:12:15.000 | 40.771 |
| 71 | JURIES Titus | | 02:22:45.000 | 00:12:15.000 | 40.771 |
| 72 | GOETHAM Alex | | 02:22:46.000 | 00:12:16.000 | 40.766 |
| 73 | BRUMMER Brian | | 02:22:49.000 | 00:12:19.000 | 40.752 |
| 74 | STEYTLER Joshua | | 02:23:37.000 | 00:13:07.000 | 40.525 |
| 75 | COETZEE Lenre | | 02:23:59.000 | 00:13:29.000 | 40.421 |
| 76 | GUMEDE Siyanda Mthobeleni | | 02:25:05.000 | 00:14:35.000 | 40.115 |
| 77 | SUJEE Masood | | 02:25:10.000 | 00:14:40.000 | 40.092 |
| 78 | MOKEBE Kamogelo | | 02:25:17.000 | 00:14:47.000 | 40.06 |
| 79 | LUBBE Elijah | | 02:25:18.000 | 00:14:48.000 | 40.055 |
| 80 | SANGE Potwana | Velokhaya Exinity | 02:25:19.000 | 00:14:49.000 | 40.05 |
| 81 | MOLEFE Vennie | | 02:25:20.000 | 00:14:50.000 | 40.046 |
| 82 | NGCANI Kuhle | Velokhaya Exinity | 02:25:22.000 | 00:14:52.000 | 40.037 |
| 83 | MAPHANGA Bongani | | 02:25:24.000 | 00:14:54.000 | 40.028 |
| 84 | VAN DER MERWE Pieterjan | | 02:25:27.000 | 00:14:57.000 | 40.014 |
| 85 | CHRISTENSEN Reuben | | 02:26:06.000 | 00:15:36.000 | 39.836 |
| 86 | ROGOTZKI Felix | | 02:26:37.000 | 00:16:07.000 | 39.695 |
| 87 | JANSSEN Dominique | | 02:26:43.000 | 00:16:13.000 | 39.668 |
| 88 | RAVLA Prateek | | 02:26:48.000 | 00:16:18.000 | 39.646 |
| 89 | JAMES Nicholas | | 02:26:49.000 | 00:16:19.000 | 39.641 |
| 90 | KOZUL Mateo | | 02:26:50.000 | 00:16:20.000 | 39.637 |
| 91 | KLOPPER Christiaan | NIPPO-EF-Martigues | 02:26:51.000 | 00:16:21.000 | 39.632 |
| 92 | KEY Adrian | Hollard Insurance | 02:26:51.000 | 00:16:21.000 | 39.632 |
| 93 | ROODT Keanan | RKC Collective | 02:26:53.000 | 00:16:23.000 | 39.623 |
| 94 | WILLIAMS KING Daniel | | 02:26:55.000 | 00:16:25.000 | 39.614 |
| 95 | HAY Jared | | 02:26:57.000 | 00:16:27.000 | 39.605 |
| 96 | VAN DYK Jacob Charles | Team Honeycomb Pro Cycling | 02:26:57.000 | 00:16:27.000 | 39.605 |
| 96 | VAN DYK Jacob Charles | Midas/Autorama | 02:26:57.000 | 00:16:27.000 | 39.605 |
| 97 | HAMMON Keenan | | 02:26:58.000 | 00:16:28.000 | 39.601 |
| 98 | MXENGE Patric Thulasizwe | | 02:27:00.000 | 00:16:30.000 | 39.592 |
| 99 | BUTLER Reynard | | 02:27:02.000 | 00:16:32.000 | 39.583 |
| 100 | NTSELE Siyabonga | | 02:28:01.000 | 00:17:31.000 | 39.32 |
| 101 | MOKOENA Thabiso | | 02:28:01.000 | 00:17:31.000 | 39.32 |
| 102 | LUBBE Samuel | | 02:28:03.000 | 00:17:33.000 | 39.311 |
| 103 | KELLY Keegan | | 02:28:04.000 | 00:17:34.000 | 39.307 |
| 104 | MARITZ Thinus | | 02:28:04.000 | 00:17:34.000 | 39.307 |
| 105 | WIESNER Ethan | | 02:28:05.000 | 00:17:35.000 | 39.302 |
| 107 | BATES Matthew | | 02:28:06.000 | 00:17:36.000 | 39.298 |
| 108 | STEDMAN Alastair | | 02:28:06.000 | 00:17:36.000 | 39.298 |
| 111 | DAMASKINOS Zandor | | 02:29:07.000 | 00:18:37.000 | 39.03 |
| 113 | GUY William | | 02:32:22.000 | 00:21:52.000 | 38.197 |
| 114 | DICKSON Geoffrey | | 02:32:22.000 | 00:21:52.000 | 38.197 |
| 115 | MCGUIRE Devon | Tenerife - BikePoint - La Sede | 02:32:33.000 | 00:22:03.000 | 38.151 |
| 116 | LESTER Matthew | | 02:34:22.000 | 00:23:52.000 | 37.702 |
| 117 | MATTHEWS Daniyal | BIKE AID Südliche Weinstrasse Development Team | 02:34:23.000 | 00:23:53.000 | 37.698 |
| 118 | PRINSLOO Diwan | | 02:34:29.000 | 00:23:59.000 | 37.674 |
| 119 | APPELS Dane | | 02:34:34.000 | 00:24:04.000 | 37.654 |
| 120 | SHELLY David | TEG Procycling Team | 02:34:45.000 | 00:24:15.000 | 37.609 |
| 121 | LAING Kyle David | | 02:36:05.000 | 00:25:35.000 | 37.288 |
| 125 | MAHNE Dehan | | 02:36:08.000 | 00:25:38.000 | 37.276 |
| 126 | EDWARDS Nathan | | 02:36:09.000 | 00:25:39.000 | 37.272 |
| 127 | LOUW Janco | | 02:36:15.000 | 00:25:45.000 | 37.248 |
| 128 | RENGANE Thabiso | | 02:38:15.000 | 00:27:45.000 | 36.777 |
| 129 | JELE Kwanele | | 02:38:15.000 | 00:27:45.000 | 36.777 |
| 131 | DUBE Nkulumo | | 02:38:17.000 | 00:27:47.000 | 36.77 |
| 133 | SCOTT Bradley | Team Honeycomb Pro Cycling | 02:41:35.000 | 00:31:05.000 | 36.019 |
| 135 | DI-SANTE Jade | | 02:41:56.000 | 00:31:26.000 | 35.941 |
| 138 | HARKEMA Ivan | | 02:43:14.000 | 00:32:44.000 | 35.654 |
| 139 | WRIGHT Cameron | | 02:43:15.000 | 00:32:45.000 | 35.651 |
| 140 | SWART Ian | | 02:43:20.000 | 00:32:50.000 | 35.633 |
| 145 | MEE Jason | | 02:48:25.000 | 00:37:55.000 | 34.557 |
| 151 | PHIRI Advocate | | 02:59:18.000 | 00:48:48.000 | 32.46 |
| 154 | NAUDE Jayden | | 03:05:57.000 | 00:55:27.000 | 31.299 |
| 158 | GOULD Jayden | | 03:10:33.000 | 01:3.000 | 30.543 |
| 159 | WOEST Kieran | | 03:17:09.000 | 01:06:39.000 | 29.521 |
| 161 | MUSUNDI Pressmore | | 03:18:25.000 | 01:07:55.000 | 29.332 |