To paraphrase something I read somewhere, the fundamental problem is that there is a qualifying session to find the fastest car, then the cars with the fastest at the front and the slowest at the back. In order to pass a car, you have to go faster than them, so there is an obvious problem with letting the fast cars start at the front. The obvious way to fix this would be to award half the points for qualifying, start the cars in reverse order, then award the other half of the points for finishing order. That will never happen, so the alternative is to set up a situation where relative car speed varies over the course of a race. The easiest way to do this is to have tyres that degrade quickly if abused, so that smooth drivers are rewarded and pit stop strategy can overcome the disadvantage of a slower car. That was tried and resulted in lots of changes in race leads, but everyone complained that the drivers couldn’t drive flat out. So now we’re back to a situation where the fastest car starts at the front and the relative pace of the cars doesn’t vary much during the race. If you wanted a format that guaranteed almost no overtaking, this is exactly what you’d do.
Edit. Oops, beaten to it by P-Jay.