Frank,
The reason Solve fails is that you have more variables in the equations than you told Solve about. This works (by adding res to the list of variables):
Solve[{res == b/a, a == 9^k, b == 15^k, a + 2 b == 25^k, a > 0,
b > 0}, {a, b, k, res}]
as does this (let Solve figure out the variables):
Solve[{res == b/a, a == 9^k, b == 15^k, a + 2 b == 25^k, a > 0,
b > 0}]
However, the minimize approach runs faster if you know that the minimum is the solution.
Regards,
Neil