Do not introduce a twist. Just progress the plot
Your story structure is based on a villain hunting down the players. The benefit of having a villain is that they are people with dynamic plans. They will not wait until the players do something to thwart them, but they will carry out their own plans in the absence of the players.
So all you need to do is bring the villain's plan to fruition in a manner that will make it impossible to have her bring the story focus back to the relationship.
Present a scene that challenges her
If the villain's plan was to abduct her, then if he were to come in and take Cass away, separating her from the party, she must respond. It becomes impossible for her to steer the story back into romance.
This is a little "railroad-y," but the fact is, if you find the relationship between Cass and your PC to be the problem, then you take the problem away by removing one of the people involved in that relationship.
But if you really want a twist...
Kill your PC (temporarily)
In the villain's attempts to find and abduct Cass, maybe he also kills your PC while doing it. This again removes your PC. Now you can set up a bridge quest where she can find a scroll/potion of Raise Dead, which you can tie back into the main narrative. She must now pursue the quest or else lose her love.
(In the event that she fails this quest, you must also have a plan for reviving your PC. Write it in a way that it does not seem like Deus Ex Machina.)
Remember: as the DM, you must understand the motivations of your players so you can use it to your advantage in the story. Her motivation is her relationship with your PC, so use that as a plot hook.
Introduce an alternative love interest for her
Once you have your PC out of the picture, introduce an NPC who does not appear in the main game, who can then take on the shoes of the love interest. If she goes with the plot hook, then you have successfully written your PC out of this game while simultaneously removing the love aspect from the larger game, where both of you play. It also gives you an NPC whose fate you have much more control over, because this one doesn't have plot armor, unlike Cass and your PC.
If she doesn't go with the plot hook, then you have a fantastic opportunity for a great story. Have the NPC follow her around, helping her selflessly when she needs it. Meanwhile, she is rejecting his advances in true "friendzone" fashion. Play on the emotions of love and rejection while using the NPC and villain to advance the plot you have designed.
Talk to her with your real feelings (of the non-romantic kind)
Let her know that you're finding the third-person sexting weird and uncomfortable. As the DM, you need to be on the same page as she is, and she needs to be on the same page as you are. While she seems sincere that she thinks she is hampering the main story, she doesn't look like she thinks it's a problem. And indeed, why is it a problem? She's still having fun.
Meanwhile, you have not told her that it is not fun for you when she veers away from the main story. Perhaps you've put hours of effort into preparing an adventure for her, and not going down that path feels bad for you since it makes you feel like you wasted your efforts. Let her know this with as much gentleness as you can.
Fade to black when it comes to scenes of that nature. When you sense that the scene is now moving to something like that, narrate over it immediately and go to the next day.
This might seem like you're pulling the rug from under her, but...
Does she really want to play the game you want to play?
Consider that the two of you may just be out of sync. Maybe she does not want to play the game you want to play, and vice versa. If there is no point of compatibility between your play styles in D&D, I recommend you stop the game altogether. Continuing to host a game you do not enjoy will only breed dissatisfaction and other negative feelings between the DM and the players, and it might leak out into your real world relationships.
So yes, while it might sting when you drop the game, it only hurts as much as pulling a band-aid. It might just be the best course of action for you in the long run.
This is not uncommon since many players come from video games, wantonly stealing from and murdering NPCs. NPCs in roleplay games tend to be smarter though, and have logic.
Give them a reputational cost.
They didn't interact with anyone else. If they check their wallet after, they'll know that it was probably that thief who stole from them. So what do they do? Not fight a bunch of murderhobos. They go to the pub and complain about these so called 'adventurers' who rob and steal from everyone they meet, and then in that village or town, people refuse to serve that thief and anyone associated with them for fear of having their stuff stolen. Don't make it universal, unless they repeatedly do stuff, but if they harass NPCs, NPCs won't want to talk to them unless very seedy, and quest givers won't give them useful info.
If they had failed the check, the NPC would slap their hand away, swear at them, and march off to tell people how untrustworthy the adventurers were, unless she really really needed them.
Explain morality. Make sure they know being a thief doesn't mean they are supposed to steal from everyone they meet. Allies are supposed to be safe- just as being a fighter doesn't mean you stick your sword in random allies, being a wizard doesn't mean you turn the local cleric who heals you into a frog, being a thief doesn't mean random stealing.
Give them a common sense check. Sometimes it would make sense to steal from an ally. A sufficiently mercenary group might want to steal from an ally if there is a valuable enough possession, and that's a quest and a heist. If their ally has a rare and powerful magical item, maybe they can get it off them, and maybe it's worth the reputational cost. A few gold probably isn't worth that risk.
Best Answer
As is always the case... Step 1 would be to talk to your problem player outside of the game, express that this is a problem, and try to work out a solution between the two of you.
However, if this does not work, you have to move on to other methods.
Part of the problem you are running into is that you are actually rewarding the player for running off and derailing the group. The player ran off to go see what the smell was, and you rewarded the player for doing this by giving her something to chase, then setting off an ambush and tying it into the main plot. In all, it made it feel like her running off was something good. They got XP, they got something tied to the plot (they don't know you weren't planning that unless you told them), and nothing particularly bad happened.
Thus, the best way to discourage a player from randomly running off is to make randomly running off have the exact same outcome it would realistically have. You find nothing. You end up a few miles into the woods. Lost. Nothing exciting happens. Because you're in the middle of an ordinary forest. Now you have to find your way back out of the woods, and the wagon you were riding on didn't stick around to wait for you. And, very possibly, your provisions got left on the wagon.
In short: If you want to discourage a player from doing things...make sure nothing fun happens when they do the thing you are trying to discourage. Be realistic about it, give summaries of what they did and how long it took, then move on to dealing with realistic consequences caused by them doing something ridiculous. This works much better than making 'bad things' happen when they disobey....because 'bad things' still dispense XP and the potential of loot.
Again, talk to them first...try to handle it in a reasonable manner. Tell them that their random derailing of the group is bothering the other players. That's always the preferred solution.