The R25 begins in the suburb of Saxonwold, just north of the Johannesburg Zoo, at an intersection with Jan Smuts Avenue, Johannesburg's M27 Road. It heads eastwards, meeting the M1 freeway, up to the junction with Louis Botha Avenue, Johannesburg's M11 Road, where it joins the road northwards up to the next junction, where it continues by a right turn. It makes its way north-east through the suburb of Sandringham, bypassing Edenvale Hospital, before crossing the N3 Highway and passing by Greenstone Hill, where Greenstone Shopping Mall is located. It continues north-east as Modderfontein Road, with Greenstone Shopping Mall on the southern side and Longmeadow Business Estate on the northern side. After meeting the M37 municipal route from Edenvale Central and the M54 municipal route from Alexandra in Greenstone, the R25 bypasses Modderfontein and crosses the border between the City of Johannesburg Metropolitan Municipality and the City of Ekurhuleni Metropolitan Municipality. It then goes through the western and northern suburbs of the city of Kempton Park. In Kempton Park, it passes by the area separating Kempton Park West from Esther Park, where it crosses the M39 municipal route, the road between Isando and Midrand/Tembisa. It then becomes the road separating Edleen and Van Riebeeck Park from Terenure. it then becomes the road separating Birchleigh from Norkem Park and Birchleigh North. Then, it passes the last suburb of Kempton Park, which is Esselen Park, where it meets the M57 route between Kempton Park and Olifantsfontein. This is where Modderfontein Road ends at the t-junction. The M57 north-south municipal route meets the R25 at a t-junction just north of its junction with the R23 route from Benoni. The R25 joins the M57 northwards, with the new Witfontein Extension to its left, up to the next junction near Tembisa, where R25 becomes the road tothe right. Right after, it crosses the R21 highway between Pretoria and Johannesburg International Airport and makes a direct line for Bapsfontein. The distance is 20 km between Kempton Park North and Bapsfontein. At Bapsfontein, the R25 meets the R50 from Pretoria and joins it going south-east up until the junction with the R51 from Daveyton. At that junction, as the R51 is the road south-west to Benoni East and Daveyton, the R25 becomes the same road heading north-east from that junction towards Bronkhorstspruit while the R50 continues south-east to Delmas. While pointing towards Bronkhorstspruit, the R25 meets the eastern termini of the M6 and M30 municipal routes, which come from Lynnwood and Garsfontein in Pretoria east respectively. The R25 meets the R42 from Delmas right before entering Bronkhorstspruit in the City of Tshwane Metropolitan Municipality. It intersects with the N4 Highway and the R104 road and goes northwards through Bronkhorstspruit. The distance is 40 km between Bapsfontein and Bronkhorstspruit. Afterwards, the R25 temporarily goes into Mpumalanga, where it intersects with the R544 from Witbank in the town of Verena, before proceeding into Limpopo province, where it ends in the vicinity of the small farming town of Groblersdal, terminating at a junction with the N11 and the R33. The distance is 110 km between Bronkhorstspruit And Groblersdal.