Time zones explain why you don't observe solar noon at 12:00 exactly, but not why the wall-clock time of solar noon varies with the seasons. In fact, even if you stay in place and don't observe DST, the time in the day where the sun is highest will vary throughout the year.
The fixed stars rotate around the celestial pole with a very constant speed (with extremely small and not completely predictable variations, less than milliseconds per day), so if you pick any fixed star and wait from it is highest in the sky to it is highest in the sky again, it will take 23 hours, 56 minutes, 4.1 second, each time.
The Sun moves in the sky more or less together with the fixed stars. It moves slowly among the fixed stars, at a speed of around one degree of arc per day, such that after a year it has traced out an entire great circle on the celestial sphere. This means that the time between two true noons (the times on two consecutive days where the Sun is highest on the sky) is on average about 4 minutes longer than the time between successive culminations of a fixed star.
However, because the Earth's orbit around the Sun is slightly eccentric, the speed of the sun relative to the fixed stars is not constant over the year. It moves quickest in early January and slowest in early July.
Additionally, the Sun doesn't move along the celestial equator -- it follows the ecliptic which is inclined by 23 degrees, so at some times during the year it will "waste" different portions of its daily motion among the fixed stars on north-south movement that doesn't contribute to the four-minute lengthening of the true-noon interval. On the other hand, near the solstices the Sun is nearer to the poles, and it takes less than one degree of east-west motion along the ecliptic to lengthen the day by 1/360 of 24 hours.
The combination of these two effects means that the apparent solar day (the time interval between two true noons) varies during the year between 23 hours 59 minutes 40 seconds and 24 hours 0 minutes 30 seconds. The cumulative effect of this is known as the equation of time, and can be as large as about half an hour -- that is, the time that passes between a true noon in early November and a true noon in early February will be about half an hour more than a multiple of 24 hours.
The zone time we use for ordinary timekeeping is adjusted such that the average difference over the year between true noon in Greenwich and 12:00 UTC is zero [*]. The second, which is the basic scientific unit of time, was originally defined as $\frac1{24\times 60\times 60}$ of the length of a mean solar day, but has since been redefined using atomic clocks. Once every several years a leap second is inserted into UTC to keep 12:00 UTC from drifting away from the averaged true noon time in Greenwich.
[*] Actually a slightly more complex process than simple averaging is used, which makes the outcome more precisely related to astronomical observables.