For me the key difference would be outsourcing typically involves sending a non core area or process of a business (such as HR, accounting, etc) to a third party. In modern times this typically means overseas where labour costs are lower (e.g. China) but purely from a definitional perspective, it can be anything considered non-core. It also means when you outsource something, you no longer have to do it yourself.
Contracting just refers to the way in which you engage human capital. Rather than through employment where an individual person is an employee of the business, contracting is where the business forms a contract with a third party (whether it's a natural person/human or another company/business) to perform specific tasks/duties/etc. They can substitute individual employees and offer a much more flexible work arrangement (e.g. contract staff at a call centre could be called in and used when business needs require them), and are typically paid a higher rate than an employee as the business does not provide other benefits such as leave entitlements or superannuation. That being said, the term 'contracting' just means to enter into a contract with another party- so you need to read it in context.