This is becoming quite common now that folks are keeping older cars on the road for longer.
Fiat's red seems to be one of the worst; once the cars get to be over about 10-12 years old, UV damage to the clearcoat results in the lacquer peeling away.
There is no fix other than to respray the affected panels.
Even if you have the roof resprayed, you'll likely soon see the same thing happening on other parts of the car, especially the bonnet, bumpers and tailgate.
Also, if you respray a single panel, it's likely to fade differently to the rest of the car, so that even if it matches once it's done, it'll stand out like a sore thumb in a year or two. The only lasting fix is to respray the whole car, and if done properly, this will almost certainly not be economically worth it.
My own view is that it's not worth trying to fix this; just accept that older cars will have blemishes.
If this sort of thing bothers you, my advice to anyone buying an older 500 is to inspect the paintwork very carefully for any signs that this may be starting. Look also for any areas that may have been recently repainted, especially those like the roof that are unlikely to have been physically damaged.
A bodyshop would also match the colour. That's part of what you're paying for.
You can match the colour when you do the job; what you can't do is guarantee it will age it he same way as the rest of the car. In a few years time, it could end up looking like a patchwork quilt.