It could be numerous things. I would start at the cheapest first by changing the expansion tank cap. Once these start loosing pressure, the coolant boils at a lower temp and doesn't circulate properly. Where the sensor for the fan is located, it could still be registering fairly cool.
Then run the engine with the heater on full to ensure the coolant is getting around the whole system. Run it till the fan kicks in, checking the top and bottom hoses to and from the rad are pressurised (not spongy) and are getting hot.
If the pipes are getting hot and the fan doesnt kick in, you probably need a new sensor/switch.
Hope its cheap to sort. It normally is unless its a head gasket. To check that,see if there is any oil in the water or what looks like maionaise on the oil filler cap.
All the best