Lack of an expansion tank won't cause overheating initially but can contribute to overheating over time.
The purpose of the expansion tank is to catch any coolant expelled from the radiator as the engine heats up and return this amount to the radiator as the engine cools down, i.e. an automatic radiator topper-upper!
So, if the radiator is full and the engine is run to full temperature, it shouldn't overheat. But any coolant expelled due to expansion won't be returned to the radiator so the coolant level will be a little lower when the engine cools down and still low when the engine is next started. If you were to top up the coolant every time the engine was cool, you could run the car without an expansion tank!
Lots of reasons why an engine can overheat. You've replaced the fan and thermostat. Have you checked for a blown head gasket, choked radiator core/fins, cooling system leak, faulty rad cap?
When you say the engine is overheating, what do you mean?
Temperature gauge reading high? or coolant fan cutting in frequently?
or steam coming out of the radiator overflow?
Need more info!
AL.