At the time they happened- no contest. Angel. Angel was actually good for Buffy.
Spike, much as I love him, isn't right for Buffy, and their entire relationship was twisted. She used him blatantly, and he let her because he was desperate... and then he began to believe the little lies he'd obviously been telling himself. It could have been great. But it wasn't. It was dark, twisted, and cruel at times. Much like Season 6 in general.