I'll begin with the conceptual side, and then discuss the computational side. If you get lost, it may be helpful to also skim the wiki link on LATEs since that is what you're dealing with.
In a perfect RCT, you randomly assign treatment, and everyone you assign treatment takes it, and everyone you don't assign treatment does not take it. Since you randomly assign treatment, you can simply compare mean outcomes by group (treatment minus control) to estimate the average treatment effect.
The fundamental problem with noncompliance (ie when treatment and/or control deviate from the above perfect RCT) is that even though your assignment of treatment was random, individuals from both groups select into treatment, effectively ruining your nice randomization. You then run into the classic problem of comparing apples to oranges: we want to compare those who got treatment to those who didn't, but now those who got treatment may be fundamentally different then those who did not!
Let's illustrate with your setting, and I'll assume that everyone in your treatment group actually used the treatment, but that some in your control group also used the treatment. Let's make things concrete, and suppose that treatment is a job training program, and outcome is income. I want to know the effect of the training program on income, so I'll compare those in my treatment who got the program to those in my control. But that's not picking up the effect of the training program, because some in the control also got the training program (this estimate is called the intent to treat, which is the effect of offering the program, which is not the same!). So maybe I think I'll drop those who took the program in the control, and compare those in treatment to those in control who did not take up the program. But now I'm comparing a random group of all individuals in treatment to a specific group in control: those who did not seek out treatment. And this sample may be very different than a random sample of the population. In this case, it's reasonable to expect that those in control who did not seek the training may have less need for it, and so they are maybe better trained than the full sample, so you're comparing different samples.
Luckily, as long as anyone who takes treatment in control would have also taken it in treatment (which in this case is automatically true since we assumed all with treatment took the treatment--otherwise, it's often a very plausible assumption), we can still recover a treatment effect. This is done using an IV approach, and I'll omit the details or theory (Mostly Harmless Econometrics is a great resource on this). But we no longer identify an average treatment (how could we, we need to omit those who selected into treatment in the control group, which is part of the overall population), and instead recover a local average treatment effect (LATE). And for who? Those we call compliers: individuals who don't take treatment when not offered it, but who would have taken treatment had they been offered it! So we don't get a treatment effect for the full population, but this is the best we can do.
As for estimation, with a binary instrument (where the instrument $Z$ is 1 if in treatment group, 0 if in control group), we can just use a simple Wald estimator. Given outcome $Y$ and treatment $D$, let $y_1$ and $d_1$ be averages when $Z=1$, and define $y_0,d_0$ when $Z=0$. Then the LATE is given by
$$\beta_{WALD} = \frac{y_1 - y_0}{d_1-d_0}$$