I painted a marble fireplace last year and I was quite pleased with the results.
I used International Self Priming tile paint and gave it two coats, I cleaned the marble with white spirit, I then brushed on the paint (small’ish areas at a time) and then rolled it very lightly with a mini gloss roller to get rid of the brush strokes, be careful when choosing a roller, don’t get a cheap foam one that feels rough as it will cause bubbles in the paint, get one that feels a bit oily/waxy.