I agree that using advice is probably the way to go, but if you really, truly have to, you can use something like this. (Comments are welcome.)


<!-- language-all: lang-el -->

    (defun third-party-func ()
      (message "original"))
    
    (fset 'third-party-func-original
          (symbol-function 'third-party-func))
    
    (defun third-party-func ()
      (message "new!")
      (third-party-func-original))
    
    ; now (third-party-func) calls the patched version;
    ; (third-party-func-original) calls the original version