Everyone says that characters have to be human - complete with emotions and reactions and yes, even flaws. And I 100% agree. But I also think there's an element to characters that humans typically don't have that draws a reader in - their ability to say and do what we all only wish we could.
So my advice on creating a compelling character is to make them better than us. Make them stronger, weaker, more in-tune, more capable, nicer, meaner...you get the idea: xaggerate their humanity. Your character needs to feel things and express things and experience things in a way that we would either a) love to or b) hate to. The person reading your story wants to root for your character (or despise your villain)...and you want that person to imagine themselves in your story. Having a character who exemplifies humanity in every way will certainly achieve that.
But this is just my opinion...what do you think?