The WHERE clause is not used instead of an ON clause. The WHERE clause is always, logically, that is, a filter of the result of the FROM-JOIN operations.
As Johan says, NATURAL JOIN does not use ON, because the join condition is inferred by column matching names. Which I will have to say, I find quite odd. But I may be missing something, as the database product I work with, Microsoft SQL Server, does not support NATURAL JOIN.