If you have a Linux machine available (if not, there are several Live distributions you could boot from CD/DVD or USB-stick), you might wish to take a look at DDRescue. That's a command-line tool using a sophisticated algorithm to create copies (clones) of "damaged" disks – either directly to another disk (e.g. if you have two drives available with your machine), or to an image file:

ddrescue screenshot (source: Wikipedia; click image for larger variant)
Depending on "damage level", creating the clone might take a while. But after that, accessing data from the clone should be as fast as it usually is from a "healthy medium". For your issue, you could create the clone as .iso
file, and then burn that back to a new medium. Details can be found e.g. in the ddrescue manual (which also holds a small tutorial with examples in chapter 7 – see example #3 for CD/DVD recovery, but make sure to check the parameters used: you might not want e.g. the -n
). Example command:
ddrescue /dev/dvd mydvd.iso mydvd.log
As in most cases with Linux and its tools, this solution comes fully free of charge (big plus). Several specific Linux Rescue distributions might even ship with it. Another plus: Using such a "live distribution", you don't even need to install anything to your computer for this. Examples for such Live Linuxes include Ubuntu Rescue Remix and SystemRescueCd. Further information can also be found in the Forensics Wiki.