Which is correct?
I congratulated him for coming first in the race.
I congratulated him on coming first in the race.
English Language & Usage Stack Exchange is a question and answer site for linguists, etymologists, and serious English language enthusiasts. It only takes a minute to sign up.Sign up to join this community
According to Oxford Dictionaries Online the verb congratulate collocates with both prepositions, but the meaning is slightly different.
When you congratulate someone on something you give them your good wishes because something special or pleasant has happened to them, e.g. "I'd like to congratulate you on your marriage".
When you congratulate someone for something you praise them for an achievement, e.g. "I'd like to congratulate the staff for their good job".
According to Google NGram Viewer congratulate on is a lot more frequent than congratulate for, but the latter is used nevertheless.
To answer your question, both sound natural to me.