It would have helped a great deal had you posted example code.
WITH RECOMPILE at the top of a procedure does not extend to any dynamic SQL run by that procedure.
Adding WITH RECOMPILE to the called procedure would force the whole called procedure to recompile.
Adding OPTION (RECOMPILE) or OPTION(OPTIMIZE FOR(@var=value)) to the problem statement is a good solution if it is suffering due to parameter sniffing, or if your database is running with forced parameterization. You also have the option of a USE PLAN hint, or a plan guide (template). There really are many possible causes, and therefore many possible solutions.
Without more details, it is difficult to say which would be right for you.