Work Text:
Soap hadn’t meant to stumble on them like this, certainly hadn’t planned to stick around and watch. He had only needed to piss, got distracted on his way back by the creaking sound before sliding into the sliver of light that pooled softly out of a cracked door.
Alejandro had Rudy on his knees, fucking him at a brutal pace from behind.
Soap bit his lip against a surprised gasp, rooted in place.
Rudy had his eyes closed, mouth open in a silent moan. A hand ran slowly up his shoulder blades, pausing to squeeze gently at the back of his neck.
Maybe it hadn’t been as rough as Soap had first thought, taking in the ways Alejandro’s other hand ran soothing circles over Rudy’s ribs, a fond smile in place as he watched his partner come apart under him. Soap couldn’t make out the words they shared, but the tone was soft, appraising. Rudy definitely looked like he was enjoying himself, arching his back when Alejandro encouraged him down onto his chest, face turning away from Soap.
It suddenly hit him how private this was, how intimate. How wrong it was that Soap was watching it all. He tried taking a step back, the floor creaking with his weight when he did.
He froze, waiting to be found out, barely even breathing. It never came, both of the other men too occupied to notice.
“S’not overly polite to watch what a man does in private,” a voice said, low, right at Soap’s ear.
Soap went to whip around, an excuse on his lips when hands stilled him, gripping tightly at his hips.
“Stay still,” Ghost breathed.
In front of them, neither Rudy or Alejandro had taken notice. Alejandro changed his angle, steadying himself with a hand on the bed next to Rudy’s face. Soap watched as Rudy reached out, gripping onto his partner, thumb rubbing into the skin of Alejandro’s wrist.
Soap shuddered, and Ghost’s thumb started rubbing circles of his own, the gesture oddly comforting. His other hand slid across Soap’s stomach, fingertips tucking into the band of Soap’s pants.
Oh, Soap thought, head spinning slightly.
“Good?” Ghost asked, his hips settling against Soap.
Soap wasn’t sure, couldn’t shake the feeling of guilt that settled in his stomach. Certainly couldn’t shake the heat that was settling there as well.
He looked back at Ghost over his shoulder, and maybe Ghost saw how conflicted he was. A gentle shush, a murmured reassurance, Ghost’s hand going no further but not leaving him either. Soap let himself lean back against Ghost, the warm pressure a reassurance on his back.
Alejandro must have finally gotten a hand around Rudy, because the sounds he was making…Soap shifted, his pulse pounding in his ears. When he did, the floorboards creaked, just the tiniest bit. He looked down, cursing, and when he looked back up, Alejandro was staring right back at him.
Soap’s breath caught as he saw Alejandro assessing them, his eyes sliding from him to Ghost, then down to the fingers in his waistband.
The smile Alejandro gave him was…filthy, his hips not stilling for a single second. He leaned forwards, whispering something to Rudy. Soap watched the way the muscles in Rudy’s shoulders tensed, then eased some. Alejandro said something else, and Rudy nodded, still facing away from them.
When Alejandro looked back up, his eyes fell to Soap’s crotch, eyebrow raising.
A challenge.
If Soap hadn’t already been on his way to hard, that would have done it. Ghost seemed to know it too, hands moving to work his belt open. He didn’t pull Soap out right away, giving him plenty of time to protest, to back out.
Soap couldn’t have left even if he tried, harder than he had been in ages. He leaned his head back against Ghost’s shoulder as the man ran teasing fingertips up the fabric of his briefs, not nearly enough to offer any relief.
Alejandro straightened himself, slowing down his pace on both him and Rudy.
A hum from Ghost. “Think they’re waiting for you to catch up?” he asked.
Fuck, Soap hoped not.
Ghost seemed to enjoy the challenge of it though, finally cupping him a little more fully, hand warm on him. No one had touched him like this in ages, couldn’t help letting himself lean into the contact, thankful when Ghost didn’t tease him any longer. Soap turned his face, tucking it into Ghost’s neck, feeling the roughness of his mask.
Fingers left him, dipping down into his waistband, grasping him properly now. Soap wasn’t known for being loud, but he couldn’t help the moan he let out, felt the quiet laugh Ghost gave before shushing him.
A hand on his chin, pulling him back to face Alejandro and Rudy. “You wanted to watch,” Ghost said, tone amused. “So watch.”
When Soap opened his eyes, he let out a shuddering breath. Rudy had turned to face them, was watching Ghost pull him out and stroke him properly. His eyes were dark, half lidded. His mouth opened, back heaving as he breathed in heavy pants.
A hand slid under Soap’s shirt, fingers finding a sensitive nipple. Soap gripped at Ghost’s forearm, sure his nails were leaving little half moons there. The man didn’t complain though, only ran his fingers around him, squeezing him gently. Soap had no idea that his nipples could be that sensitive, mouth falling open as Ghost did it again, a little harder this time.
Alejandro looked close, his eyes fixed to the hand on Soap’s cock, his thrusts nearly in time with Ghost’s hand. Ghost seemed to have noticed too, his pace picking up. Alejandro gave more murmured words to Rudy that Soap couldn’t hear, a smile that sent heat rolling down his spine.
They had done this before, Soap realized. It was too easy between them to be the first time. Maybe the door being open had been an accident, but them finding each other tonight had not been.
Ghost was hard against his ass. When Soap leaned back into him, shifting his hips in a way that he knew would give the man some friction, Ghost grunted, rewarding him with a couple of quick, tight strokes around his head.
He was so fucking close, caught up in the gentle rocking of their bodies, with the scene in front of him. He loved the way Ghost was handling him, spurred on further by the idea that they were enjoying this just as much as he was, in watching and being watched.
When a whimper bubbled up, Ghost’s hand left his chest to cup his throat, feeling every sound that slipped out. “Going to come for me, Johnny?” he asked, voice low, a little rough. He wasn’t being subtle anymore about the way he was rubbing himself against Soap.
It sounded like Alejandro and Rudy were no longer able to hold back, a gasped out breath drawing both of their attentions to the room. Alejandro’s hips were bruising, snapping unevenly against Rudy. Rudy let out a moan, finding his release too, eyes closing as he bit back another cry.
Soap couldn’t hold back anymore, his orgasm hitting him in startling bolts of white light, back arching against Ghost. Ghost cursed, reaching down to try and save Soap from making a mess all over the floor, now coming in ropes into his hand.
It would have been comical if he wasn’t recovering from one of the most intense orgasms he had ever had. Ghost didn’t seem to mind though, murmuring reassurances into his ear as he stroked Soap through it.
On the other side of the door, Alejandro was running a soothing hand up and down Rudy’s back, letting his partner slip down onto the bed in exhaustion. Alejandro looked up to smile at Soap, the look knowing and satisfied. Soap was still trying to get his brain to catch up with his body, the reality of what they had all just done settling.
Rudy’s eyes closed, face turning back away from the door. Alejandro laughed, leaning down to whisper to him, easing himself down next to the man. His expression had turned fond again as he rubbed gentle circles into Rudy’s ribs. He flashed that smile back up at Soap, lifting his hand to indicate for them to close the door.
Soap swallowed, nodding.
It was Ghost who pulled it shut though, who tucked him back into his pants and pressed his forehead to Soap’s temple, giving him a moment to settle. Soap knew they should move, just didn’t have the energy for it yet.
“Good?” Ghost murmured, his voice gentle.
Soap hummed. He was. Tired, a little confused in more ways than one, but definitely okay. A pressure at his hip reminded him that there was still unfinished business but Ghost didn’t push him, didn’t ask, just held him while he adjusted.
Ghost had been doing a lot of that recently. Offering him support and check ins and even just a listening ear. It had become something Soap had come to rely on. “Can I help with that?” Soap asked, pushing back into Ghost just enough to draw out a little breath.
There was a pause, and for a second, Soap was afraid Ghost was going to turn him down, to go right back to his room and act like this never happened. “I can finish on my own if you needed,” Ghost said. There wasn’t any judgment there, no resentment at all. If Soap had to walk away, Ghost would have let him.
It gave him confidence. Soap turned, hands finding their way into Ghost’s shirt, pulling him in a little closer. When he looked up, he was hit with the need he saw in Ghost’s eyes, by how much Ghost wanted him. He could feel the heat of Ghost’s abs against his knuckles, and a hand settled low on Soap’s back, just above the curve of his ass. “I want to help,” Soap breathed. “Please.”
When Ghost guided Soap back to his room, his hand didn’t leave Soap for a single second, like he was desperate for him, needed the connection. When the door clicked shut, Soap prayed to every god he knew that he could work himself up to a second round.