I have a solution that requires only 17 races.
First, though, let me explain a simple solution that requires 32 races. Divide the cars into 7 groups of 7, and race each group (7 races). Repeat 25 times: Pick the fastest remaining car from each group and enter it into a race, and set aside the winner (25 races). The first of the 25 races determines the fastest overall car (#1), the second race determines #2, and so on.
Now a solution with only 17 races:
Our strategy will be to first identify the 24 fastest cars (let's call these cars "speedy"). Then we'll find the fastest of the rest (#25).
Randomly place the cars on a 7x7 grid, and race each row (7 races).
Then, race the 3rd place finishers from each race (8th race), and sort the rows by the 3rd place finisher speeds.
So, after 8 races we have this:

Each grid cell represents a car. An arrow points to the faster car. Note that the arrow is transitive.
Already we can identify 8 "speedy" cars:

How do we know they are speedy? Take a look at the blue 'x'. Only 23 cars are possibly faster than it (those not in the bottom-right 5x5). So, it is certainly "speedy". You can verify this for the other x's.
We have identified 8 of the 24 "speedy" cars. Let's remove these 8 from future consideration. We are now looking for the fastest 16 of the remaining cars. Our seven groups have sizes 4,4,5,7,7,7, and 7. (For the diagrams, whenever we remove a car, let's slide the remaining cars in the row to the left.)
Let's race the 2nd fastest remaining car of each group, and sort the rows accordingly (9th race). As before, we can identify 4 cars which are certainly among the 16 fastest (i.e. "speedy"):

I colored in the cells where the removed cars might be, but this has no effect yet.
We have identified 12 "speedy" cars. Remove the "speedy" cars, and we look for the fastest 12 of the remaining cars. Our groups have sizes between 2 and 7.
Let's race the 2nd fastest remaining car of each group, and sort the rows accordingly (10th race). We identify 2 cars which are among the 12 fastest (i.e. "speedy"):
(10 "speedy" cars remain.)
We can repeat the previous step twice more (11th and 12th races). Each time we remove 2 more cars. However, note that a row/group might have 0 or 1 cars in it. If it has 1 car in it, we race that car instead of "the 2nd fastest remaining". If that car wins, we know that it is "speedy", as well as the next fastest 2nd place car. In any case we identify 2 "speedy" cars.
(6 "speedy" cars remain.)
After 12 races we have identified and removed 18 "speedy" cars. We need to identify the remaining 6 "speedy" cars.
Now let's simply race the fastest remaining car in each group (13th race), and sort the rows accordingly. The winner is "speedy". 5 left.
After that last race, there are only 2 cars which could be the fastest remaining car. The blue o's:

Additionally, the 2nd fastest remaining car is either a blue 'o' or green 'o'. Let's race these 5 cars (14th race), and the top two finishers are certainly "speedy". 3 left.
Let's repeat the last two steps/races to identify the last 3 speedy cars (15th and 16th race).
So, we have identified 24 "speedy" cars. The fastest remaining car must be the 25th fastest. We can find this car by simply racing the fastest car in each row/group (17th race).