But here's something maybe you haven't heard: Readers won't necessarily sympathise with a flawed character either--not unless you make those flaws relatable in one key way.
But all too often the character is so flawed that I just end up hating him, especially when he happens to be the main character. He makes stupid decisions, he hurts other people, he thinks he's hilarious (when he's not), he's a jerk, and worst of all he gets away with every bit of it.
So how do you make a jerk likable? Why is Tony Stark, for instance, a likable character? Or Megamind? Or Cuzco?
The key is consequences.
It's not enough that your character makes bad decisions. Those bad decisions have to come boomeranging back on him at some point in the story causing him infinite suffering, both physical and moral. Make him mess up big time when he's showing off or trap him in the sticky web of lies he's spun. Make the guy he ridiculed in the elevator thirteen years ago come back for revenge or make the unwilling test subject of his superhero serum decide to be a super villain.
Or, you know, you could just turn him into a llama.
Like Eoin Colfer's Artemis Fowl--a twelve-year-old evil mastermind and racketeer. Yes, he's funny, resourceful, and original, but he doesn't make me relate to him. He makes me want to turn him over my knee and give him a good, old-fashioned paddling.
Got it? Make him suffer. It's a shared experience we all relate to.