Could be a number of things - bad thermostat, damaged or clogged radiator, bad water pump, damaged fan, slipping v-belt, bad sending unit, etc.
First thing I'd check - condition of the coolant and verify its level. If it looks good - take a peek in the next of the radiator - see if there is significant scale build up inside (look in filter neck), look for obvious signs of damage (flattened cooling fins, physical blockage of the radiator, signs of repair - solder, etc.) Check the radiator fan, note anything of issue. Check the belts - see if they are heavily worn or slipping. The hoses - look for obvious signs of damage.
If that all checks out - I'd verify with a separate temperature probe the actual temperatures. Unlikely, but it is possible that the cooling system is actually fine, that it is the temperature sending unit or the gauge itself is faulty. This can also be traced down to electrical noise in the system - funky wiring, botched audio install, messed up alarm system install, etc. - can cause all sorts of sensor issues in the cars.
If the engine really is running hot - most likely it is the thermostat, followed by a bad water pump. If the car hasn't been serviced regularly, might be a good idea to flush out the cooling system - note any scale or "mud" that comes out. Run the car and see if that flush helped. Sometimes you will get some debris stuck in the thermostat - preventing it from fully closing. If that happens, the coolant will be constantly circulated, eventually overheating. Happens mostly at low speeds, idle - as the fan can only move so much air past the radiator. A radiator filled with sludge or heavily scaled makes it that much harder to cool off. At speed - you have plenty of air movement to help cool, but even then - eventually, it will overheat.