Are you genuinely concerned about the reason? If so, then 'Why are you late?' is the best way to find out. However, it is very direct and if the other person doesn't realise they are late (perhaps the meeting time wasn't clear), it could be confrontational. I would say it depends how you say it: angrily, or softly and concernedly. I often use the more indirect 'What happened?', or 'Did you forget what time we arranged to meet?', or even 'Are you ok?'.