1. He has watched the World Cup for 3 hours.

2. He has been watching the World Cup for 3 hours.

----------------------------
Are both grammatical? Which one is commonly used?

Both are correct, and both are used about evenly, I'd say.