A friend in need is a friend indeed

In a haze of sweat and steam, Jack and Ethan’s gym “bro-code” banter blurs into something rawer—touches too close, whispers too loaded, every lift and rep dripping with heat. But Zack sees it. Watches. Records. And when the locker room fills with steam, the secret explodes into a daring show neither Jack nor Ethan bother to hide.

  • Score 9.9 (34 votes)
  • 1254 Readers
  • 7323 Words
  • 31 Min Read

The clang of plates hitting steel echoed through the gym, bassy and sharp like a ritual drumbeat. Jack slid a forty-five onto the bar, sweat already rolling down his neck. Ethan leaned close, fingers brushing Jack’s waist as he “helped” steady the plate. Too close. Way too close.

“Bro,” Ethan murmured, low enough no one else could hear, “you’re loading me up thick today.”

Jack smirked, lips twitching as he bent down to grab another plate. His ass flexed tight under his shorts, fabric stretched like it could split any second. He knew Ethan was watching. Hell, he bent slower just so Ethan could watch.
“Gotta make sure you can take the full weight, bro. No half reps today.”

Ethan grabbed the bar, shaking it just enough to make it rattle—just enough to make Jack’s arms tense and his chest puff out.
“Don’t worry,” Ethan grinned, “I can handle a heavy load.”

Their eyes met across the bar. The air between them felt thicker than the sweat clinging to their skin. Neither of them broke first. Jack finally chuckled, wiping his palms across his shorts, leaving dark streaks on the fabric.
“Bet you can, bro.”

They moved to the bench, Jack laying back, chest spread wide, arms ready. Ethan hovered behind the bar, spotting. His hands wrapped the steel, but his eyes dropped shamelessly to the outline tenting Jack’s shorts. Jack caught it and smirked, puffing his chest.

“Keep your eyes on the bar, bro.”

“Hard not to,” Ethan shot back, leaning low enough that his breath tickled Jack’s ear. “It’s right there.”

Jack pressed through his first rep, veins bulging, every muscle tight and glistening. Ethan let his hands ghost just above the bar, close enough to graze Jack’s fingers on the return. Each rep dragged the tension out longer, their rhythm syncing like it always did—smooth, steady, loaded with charge.

Jack racked the bar with a loud clang and sat up, sweat dripping down his chest. Ethan slapped his shoulder, hand lingering just a beat too long.
“Bro, you’re glistening. Looks good on you.”

Jack grinned, grabbing the towel off the bench and tossing it at Ethan.
“Don’t pretend you don’t want a taste.”

Ethan caught the towel, face flushed but grinning like a wolf. Their banter wasn’t loud, but it carried just enough for ears to prick up. Across the gym, Zack paused mid-curl, eyes narrowing as he watched them. He’d heard the code, the rhythm, the weight of words that meant more than what they said.

Zack’s smirk curled slow, cocky.
“Gotcha now, bros…” he muttered under his breath, already plotting.


Zack pretended to re-rack his dumbbells, but his eyes never left the pair. He moved down a bench, closer, keeping his earbuds in but no music playing. Every laugh, every half-whisper, every look between Jack and Ethan sharpened his grin. He knew it. He knew it.

Meanwhile, Jack and Ethan shifted to squats. Ethan loaded the bar heavy and ducked under, legs spread, ass pushed back as he found his stance. Jack stepped in close—too close—palms brushing Ethan’s waist as he spotted.

“Nice form, bro,” Jack murmured, voice dripping with heat only Ethan would catch. “Keep it tight, keep it low.”

Ethan smirked, dipping into his first squat, thighs straining, ass pressing right back into Jack’s crotch.
“You like this angle, bro?” he whispered on the way down.

Jack clenched his jaw, breath hot against Ethan’s neck.
“Perfect. Don’t stop.”

From across the racks, Zack nearly dropped his phone. He angled it subtly, screen recording while pretending to scroll. His eyes were locked in, certain he was about to catch something undeniable.

Jack’s hands ghosted lower, steadying Ethan at the hips. Their rhythm was obscene if you knew how to read it—smooth, controlled thrusts of weight and flesh. Ethan grunted with each rep, sweat dripping down his back, Jack’s breath rolling over him like heat waves.

When Ethan racked the bar, Jack leaned close, lips just brushing his ear.
“Bro… you’re dripping. Thought I’d have to wring you out.”

Ethan turned, face flushed, sweat clinging to his jawline, and smirked.
“Maybe you should.”

Zack’s grip on his phone tightened. His eyes flicked to the mirrored wall behind them—reflections catching Jack’s hand brushing Ethan’s side, catching the too-close stance, the way they looked at each other like no normal “bros” ever did. His grin spread, wicked.

“Almost got you, bros,” he muttered. “Just one slip.”

But when Jack and Ethan moved on to deadlifts, their code shifted—phrases that sounded like gym hype but dripped with private meaning.

“Load me up thick, bro.”

“Yeah, take it slow, feel every inch.”

“Gonna pull till you can’t walk straight tomorrow.”

To everyone else, just two jacked dudes hyping each other. To Zack? Pure confirmation.

His heart hammered as he stood, towel slung over his shoulder, and drifted toward the showers. If they thought they were slick, he’d be waiting. Camera ready.


They slid over to cables next, sweat sheening across their shoulders and dripping down every carved line of muscle. Jack took the low row, grabbing the handle with a flex that made his biceps pop, veins standing out like cords. Ethan leaned against the machine, arms folded, smirk sharp as his eyes tracked every rep.

Jack grunted through the pull, lats flaring, chest swelling, cock clearly outlined in his clingy gym shorts. “Gotta get the pump right, bro. Feels way better when you finish it off hot.”

Ethan tilted his head, biting his lip just a little. “Oh, I know. Nothing like hitting it hard, working up the sweat, then steaming it all out together.” He licked a bead of sweat off his upper lip, gaze locked on Jack’s body like he was already undressing him.

Jack dropped the handle, chest heaving, then stepped in close—too close again. His shoulder brushed Ethan’s, his voice dropping low so only Ethan would catch it.
“Steam room’s closed, bro. Guess that means showers’ll have to do.”

Ethan’s smirk widened, cock twitching against his shorts as he leaned just enough to bump against Jack’s thigh. “You saying we should go for a… deep rinse?”

“Deep. Thorough. Make sure every part’s clean.” Jack’s grin was sharp, dirty, his hand “accidentally” grazing Ethan’s lower back before pulling away.

From a nearby bench, Zack’s phone was angled just right to catch their reflection in the mirror. His eyes widened—he swore he saw Jack’s hand brush Ethan’s ass.

Ethan tugged at his shirt, peeling it off and wiping sweat from his abs. His torso gleamed, every line cut and tight, nipples peaked, stomach flexing with each breath. He tossed the shirt over his shoulder and said, voice like a dare:
“Guess the real question is… who’s on top of the water, and who’s under it?”

Jack’s laugh was low, rolling through his chest, his cock straining against damp shorts. He stepped even closer, almost nose-to-nose. “We’ll figure it out in there, bro. Just hope the tile doesn’t echo too loud.”

They held each other’s stare, air thick, both so close they could’ve kissed. But instead, Jack grabbed the towel draped around Ethan’s neck and tugged him toward the locker rooms with a smirk.

Zack’s pulse kicked—he stuffed his phone in his pocket and followed, eyes wide, ready to catch them in the act.


The locker room had that humid, chemical tang of soap and sweat—half sterile, half primal. Jack and Ethan were the last to roll in, voices low, still carrying that coded thread of banter from the floor. Zack lingered nearby, pretending to fumble with his locker combination but really just…listening. Watching.

Jack peeled his tank over his head first, the fabric sticking a moment before sliding free. His torso was flushed from the lift—pecs lifted high, abs tight under the sheen of post-workout sweat. He shot Ethan that half-grin, the one that looked like a joke but lingered too long.

Ethan tugged his own shirt off slower, more deliberate. He did that little roll of his shoulders that made the veins in his arms stand out, then stretched until his waistband rode low. He and Jack made it look casual, just bros winding down, but every flicker of eye contact buzzed like static.

“Shower’s open, bro,” Jack muttered, tossing his shirt into his locker. The way he said it, though—it wasn’t just about soap.

Ethan smirked. “Yeah, don’t want to waste the pump, right?” His voice had that heavier undertone, not loud, but sharp enough to cut through the background noise of clanking lockers and running water.

Zack’s gaze was glued to them, almost helpless. He tried to focus on unlacing his shoes, but when Jack dropped his shorts and stripped down to a jock that clung tight, Zack nearly forgot to breathe. Ethan followed a beat later, peeling his compression shorts down his thighs, slow enough to make it feel intentional. Both of them had the thick, heavy-limbed confidence of guys who knew their bodies looked good—and who knew someone was watching.

They didn’t acknowledge Zack outright, but they didn’t not notice him either. Every glance between them seemed a little exaggerated, every flex drawn out just a little longer.

Jack flicked his towel over his shoulder, cocking his head toward the showers. “So…you wanna keep running that play?”

Ethan’s smirk widened, eyes narrowing just slightly. “Thought you’d never ask.”

Zack froze, pulse hammering. Whatever “play” meant, he knew damn well he wanted front-row seats.

The shower room was already misted over, steam rising in thick curls that made the fluorescent lights haze and glow. The sound of water beating tile drowned out most voices, which only made the little half-laughs and muttered phrases between Jack and Ethan feel more conspiratorial.

Zack trailed them, towel slung loose at his hips, trying hard to look casual as he drifted toward the far side. He picked a showerhead down the row, turned the water on, and let it run while he stayed half in shadow, half in fog. His eyes weren’t on his own space though—they were locked on the pair across from him.

Jack had claimed a corner shower. He let the spray roll over him, head tilted back, chest heaving under the heat. Every muscle seemed to pop harder under the steam—pecs glistening, shoulders bunched, water streaming down his ridged abs. Ethan stepped in close beside him, so close their sprays overlapped, droplets beading where his body angled toward Jack’s.

They kept the bro-code chatter alive, words that sounded innocent on the surface but landed like sparks in the steam.

“Good lift today,” Jack muttered, voice low.

“Yeah? Felt like you had me beat on that last set.” Ethan’s smirk was audible, even as he dragged a hand over his wet hair.

“Maybe,” Jack said, grinning. “Guess we’ll see who’s got more…endurance.”

Their shoulders bumped as though by accident, but neither moved away. The water turned their skin into something gleaming and unreal—every line of definition sharpened, every drop clinging before sliding down in rivulets.

Zack’s heart hammered. He ducked his head, pretending to wash, but his gaze kept cutting sideways through the haze. They weren’t touching in any obvious way, not yet, but the current between them was obvious enough to taste. Jack’s eyes kept dropping lower, Ethan’s grin kept tugging wider, and every moment built on the last.

It was like watching two fighters circle before the bell—except the tension wasn’t violent. It was heavy, slow, charged. Zack shifted, pulse straining, towel clenched tight in his fist.

He told himself to move, to leave, but his feet stayed planted.


The steam curled thicker, wrapping the room in a hot veil. Water hammered tile and hissed, but it couldn’t muffle the tension breaking loose between Jack and Ethan.

Jack braced one hand against the wall, his chest rising and falling under the spray, every ridge of him shining wet. Ethan leaned in close enough that their shoulders brushed again, lingered, then slid. His smirk was sharp but his eyes burned, locked on Jack like a dare.

“Think you got more in you?” Ethan asked, voice pitched low—just above the hum of the water.

Jack’s laugh came through his teeth. “You know I do, bro.”

That one word—bro—carried everything it shouldn’t. Ethan’s hand grazed Jack’s hip, casual enough if anyone walked in, but deliberate enough that Zack’s gut clenched from where he stood half-hidden down the row.

The fog swirled, blurring edges, but there was no missing what happened next. Jack dropped his head, lips brushing Ethan’s ear like he was whispering strategy. Instead he murmured, “Bet you can’t keep quiet.”

Ethan exhaled hard, that smirk bending into something raw. His fingers traced along Jack’s stomach, water slicking under his touch until they nearly ghosted lower.

Zack couldn’t breathe. He pressed back against the tile, heartbeat ricocheting, terrified they’d hear him—but he couldn’t look away. It was like watching a live wire spark, like the world would break if either man pulled back.

And then—Jack moved. He grabbed Ethan by the back of the neck, dragging him close enough that their mouths nearly met. The hiss of water filled the gap, steam swallowing everything but the tremor of their breaths. Ethan didn’t resist; his body leaned into it, taut, ready, his lips parted just enough that the promise hung there.

For a second, it looked like they’d snap—like the steam would explode with the sound of them colliding.

But Ethan’s eyes flicked sideways, sharp, almost instinctive, scanning the row. Jack noticed. Both froze, breaths ragged, muscles coiled, tension vibrating so hard it hurt.

Neither said it, but both felt it: someone was there.

Zack’s pulse slammed in his ears. He prayed they hadn’t seen him, prayed harder they had, his body betraying him either way.

The steam curled thicker, wrapping the room in a hot veil. Water hammered tile and hissed, but it couldn’t muffle the tension breaking loose between Jack and Ethan.

Jack braced one hand against the wall, his chest rising and falling under the spray, every ridge of him shining wet. Ethan leaned in close enough that their shoulders brushed again, lingered, then slid. His smirk was sharp but his eyes burned, locked on Jack like a dare.

“Think you got more in you?” Ethan asked, voice pitched low—just above the hum of the water.

Jack’s laugh came through his teeth. “You know I do, bro.”

That one word—bro—carried everything it shouldn’t. Ethan’s hand grazed Jack’s hip, casual enough if anyone walked in, but deliberate enough that Zack’s gut clenched from where he stood half-hidden down the row.

The fog swirled, blurring edges, but there was no missing what happened next. Jack dropped his head, lips brushing Ethan’s ear like he was whispering strategy. Instead he murmured, “Bet you can’t keep quiet.”

Ethan exhaled hard, that smirk bending into something raw. His fingers traced along Jack’s stomach, water slicking under his touch until they nearly ghosted lower.

Zack couldn’t breathe. He pressed back against the tile, heartbeat ricocheting, terrified they’d hear him—but he couldn’t look away. It was like watching a live wire spark, like the world would break if either man pulled back.

And then—Jack moved. He grabbed Ethan by the back of the neck, dragging him close enough that their mouths nearly met. The hiss of water filled the gap, steam swallowing everything but the tremor of their breaths. Ethan didn’t resist; his body leaned into it, taut, ready, his lips parted just enough that the promise hung there.

For a second, it looked like they’d snap—like the steam would explode with the sound of them colliding.

But Ethan’s eyes flicked sideways, sharp, almost instinctive, scanning the row. Jack noticed. Both froze, breaths ragged, muscles coiled, tension vibrating so hard it hurt.

Neither said it, but both felt it: someone was there.

Zack’s pulse slammed in his ears. He prayed they hadn’t seen him, prayed harder they had, his body betraying him either way.


The hesitation didn’t last. Jack’s grin twisted, sharp and knowing. He leaned closer to Ethan, lips brushing his ear.

“Someone’s watching, bro.”

Ethan’s chest heaved. He didn’t pull back—instead, his eyes went darker, hungry. “Then let’s give ’em a show.”

The air snapped between them. Jack crushed their mouths together, the kiss wet and deep, steam curling around their locked bodies. Ethan groaned into it, his hand sliding low, fingers curling around Jack’s cock. The sound Jack made—half a growl, half a moan—echoed off the tile.

Jack answered back by gripping Ethan just as hard, their fists moving in rhythm, water slicking every stroke. They pressed forehead to forehead, their breaths ragged, grinding into each other’s hands like they couldn’t get enough.

“Fuck, bro,” Ethan whispered against his lips, deliberately loud enough that it carried. “So hard for you.”

Jack chuckled, low and dirty, thrusting into his fist so the motion showed—so the outline of cock sliding against palm was framed in the rising steam. “Let him see what you do to me.”

Zack’s jaw hung slack, his whole body buzzing, watching every flex of muscle, every shudder when a thumb teased the leaking tip. He couldn’t move—couldn’t even blink—while they stroked each other slow and deliberate, putting it all on display like they’d rehearsed it.

Ethan bit Jack’s bottom lip, then broke the kiss just long enough to smirk. “Bet he’s touching himself right now.”

Jack’s eyes burned through the haze, lips glistening. “Good. He should. We’re not stopping.”

They pressed closer, cocks sliding against each other now, fists still working, every thrust exaggerated so that whoever was watching wouldn’t miss a single second of it. Their groans blended with the hiss of water, messy, intimate, unashamed


Steam blurred the edges of everything, but Jack and Ethan stood out in sharp relief—two bodies slick, flushed, pressed together like they were starving.

Jack pulled back just enough to spin Ethan around, pressing him chest-first against the tile. The slap of wet skin echoed as he ground into him from behind, hands splayed wide across Ethan’s hips. He didn’t even thrust, just rocked slow, teasing, showing off the grind of cock against ass so anyone watching would see.

Ethan’s head dropped forward, a groan tearing out of him. “Bro… keep doin’ that. Let him see how bad I want it.”

Jack smirked, lips brushing the curve of Ethan’s shoulder. “Yeah? You want me to show him how you beg for it?”

Ethan turned his head enough to flash a grin. “Do it, bro. Give him the full show.”

Jack dropped to his knees, water pouring over his back, muscles gleaming. He spread Ethan wider, hands gripping hard, then leaned in to kiss along the curve of his ass. Ethan shivered, palms flat against the wall for balance.

Jack looked up, eyes blazing, water dripping off his lashes. He smirked knowingly—as if he could feel Zack’s stare through the steam—and then leaned in, letting his tongue drag teasingly across Ethan’s skin before moving lower.

“Fuck, bro,” Ethan gasped, his voice carrying. “On your knees for me? You’re unreal.”

Jack’s grin deepened as he mouthed lower, lips hot and open, working his way toward Ethan’s cock, the whole display slowed down just enough that anyone watching would see every step of the descent.


Jack let his tongue trace Ethan’s thigh first, dragging the suspense out until Ethan’s legs trembled. The steam clung to Ethan’s skin, making him shine under the harsh locker room lights.

Jack glanced up one more time, smirking like he knew exactly who was watching. Then, slow and deliberate, he let the fat head of Ethan’s cock rest against his lips. He kissed it first, just a soft press, before opening up and letting the tip slide inside.

“Bro…” Ethan groaned, hand shooting to the back of Jack’s head. “Fuck—look at you.”

Jack hummed around him, the vibration making Ethan’s knees nearly buckle. He sucked in just the head, swirled his tongue, then pulled back with a wet pop, smirking. “Gotta give the dude in the shadows a good show, right?”

Ethan’s laugh broke into a moan as Jack swallowed him deeper this time, inch by inch until his lips brushed the base. His throat worked around the length, and he held there, letting Ethan twitch and groan while water poured down both of them.

“Bro, fuck—your mouth’s unreal…” Ethan panted, head back against the tile. “He’s seeing how you worship me right now.”

Jack pulled back, spit and water mixing, cock slick and gleaming in the steam. He gave it a stroke, slow and showy, before licking a stripe up the side and taking him back down again, faster this time. The sounds of slurping, groaning, water hitting tile—it all echoed, filling the showers.

Ethan’s hips rocked forward without him even meaning to, feeding himself into Jack’s mouth. His abs clenched, chest heaving. He bit his lip hard, trying to hold back the noise, but little gasps kept slipping out.

Jack’s eyes locked on his, steady even as his throat opened again and again, cock sliding in and out with messy, wet precision. Every motion was exaggerated, meant to be seen, his tongue dragging and curling like he was performing.

Ethan’s voice cracked low, desperate. “Bro… you’re making me lose it. He’s seeing me fall apart—fuck, don’t stop.”


Ethan tugged Jack up by the hair, kissing him hard, tasting himself on Jack’s tongue. Then he spun him around, pressing him chest-first into the slick tile.

“Your turn, bro,” Ethan muttered, his voice thick with lust.

Jack smirked over his shoulder, spreading his stance just a little wider, water running down his back in rivulets. “You gonna give him the real show now?”

“Damn right.” Ethan dropped to his knees, big hands spreading Jack’s ass wide. The sight alone had him groaning. Steam clung to Jack’s skin, his hole twitching, inviting.

Ethan leaned in and spat, the sound echoing sharp in the steamy room. Then his tongue dragged up, slow and deliberate, flattening across Jack’s rim before circling tight.

Jack’s whole body shuddered. His head dropped forward, a groan muffled against his arm. “Fuck, bro—yeah, that’s it. He’s watching you eat me out like I’m your meal.”

Ethan buried his face deeper, tongue stabbing in, swirling, pulling back just to lick and tease. He sucked on the rim, loud enough to carry. His hands gripped Jack’s ass cheeks hard, keeping him spread open, making sure every detail was on display.

“Bro,” Jack gasped, hips jerking back against Ethan’s tongue. “You’re putting on a whole performance. Bet he’s hard as hell out there.”

Ethan chuckled into his hole, the vibration making Jack moan louder. He licked deep again, relentless, then pulled back just long enough to growl, “Let him see you beg for it, bro.”

Jack’s fingers curled against the wall, legs shaking. His hole clenched and fluttered against Ethan’s tongue, desperate, hungry for more. “Shit, bro—I can’t take it. Don’t stop. Don’t you fucking stop.”

Ethan grinned, diving back in, lapping him open like he wanted to crawl inside. Every lick, every flick of his tongue was exaggerated, loud, wet, performed for their hidden audience.

The steam, the echoes, the raw sounds of Ethan devouring him—it all built into a filthy symphony, Jack trembling as he realized just how much he loved being seen.


Ethan was locked in, tongue plunging, lapping, circling like he had no intention of letting Jack up for air. His fingers dug into the swell of Jack’s ass, spreading him wide so every twitch, every clench of his hole was on display.

Jack slammed a fist against the slick tile, groaning low and rough. “Fuuuck, bro… you’re killing me. He’s out there watching you tongue-fuck me open. Bet he’s stroking his cock right now.”

Ethan pulled back just enough to smirk up at him, lips shiny, chin dripping. “Good. Let him. He’ll never get this seat at the table.” Then he spat again, hot, wet, and dove back in.

Jack jolted with a strangled moan, hole spasming around Ethan’s tongue. His thighs trembled under the onslaught, calves flexing as his body tried to push back into every lick. “Goddamn, bro—you’re eating me like it’s your last meal.”

Ethan chuckled dark against his rim, making it vibrate, then pressed his tongue flat and slow, dragging across until Jack’s knees buckled. He sucked hard, lips locking over the twitching ring, and let the sloppy sounds echo through the steamy showers.

“Shit—fuck, bro!” Jack gasped, voice cracking. His forehead thumped against the tile. “I can’t—I’m begging, bro. I need your cock. Right now.”

That broke Ethan’s control. He stood, water streaming down his broad chest, cock thick and leaking between them. He slapped it against Jack’s ass twice, smearing pre across his hole, making sure Zack got a front-row look.

Jack moaned at the contact, grinding back. “Yeah, bro—feed me that dick. Give him a show.”

Ethan lined up, pressing the swollen head against Jack’s slick rim, rubbing slow circles, teasing the stretch. He bent low, lips brushing Jack’s ear. “You ready to get put on display, bro?”

Jack’s ass flexed around the pressure, hole practically sucking the tip in. His voice was wrecked, desperate.
“Fuck yes, bro. Do it. Show him how you own me.”


Ethan didn’t push in yet—he just let the fat head of his cock smear over Jack’s rim, slow circles, pressure and retreat, enough to make Jack twitch and gasp. Every grind painted him in slick pre, the swollen crown kissing the center before slipping just off, dragging over sensitive skin.

Jack’s forehead pressed to the tile, teeth clenched. “Bro—fucking stop teasing me… You’re gonna break me.”

Ethan smirked, steadying his grip on Jack’s hips. He leaned forward, grinding the head harder, letting it pop just barely inside, then slide back out. Jack’s hole clenched around nothing, aching for more.

“Damn, bro,” Ethan muttered, voice rough with control. “You’re sucking me in and I haven’t even given it to you yet.” He slapped Jack’s ass once, watching the ripple. “Bet our little audience is losing his mind right now.”

Jack groaned, hips pushing back instinctively. “Fuck, bro. Let him watch. Just—stop holding out on me.”

Ethan chuckled low, then raised his voice just enough to echo in the steam.
“Yo, Zack… You wanna keep creeping in the corner, or you want a closer look at how a real bro gets fucked?”

The steam swirled with silence, but both of them knew Zack was out there—breathing heavier than the mist, his cover already blown.

Jack’s laugh cracked into a moan as Ethan ground in deeper, just the head, stretching him open before pulling out again. “Yeah, bro. Let him come see the show. Just—please—feed me that cock already.”


The steam shifted as if it carried the sound of footsteps—hesitant but drawn closer. Zack’s outline flickered in the fog, edging toward the showers, trying not to be obvious but way too curious to stay away.

Ethan’s grin turned wicked. He lined himself up one more time, the fat head snug against Jack’s rim. Then, with a low growl meant as much for Zack as it was for Jack, he pushed.

Jack’s hole stretched around him, swallowing inch after inch, the slow slide making Jack’s back arch and his palms slam against the tile. “Fuuuck, bro…” Jack’s voice cracked, half-groan, half-laugh. “That stretch—fuck—it’s hitting so deep already.”

Ethan’s hands tightened on his hips, pulling him back while he sank forward, their bodies locking in rhythm. His breath ghosted over Jack’s ear as he muttered, “Showtime, bro. Let him see how it’s done.”

Zack was frozen at the edge of the steam, eyes wide, chest heaving. He couldn’t look away.

Jack felt it too—the heat of being watched—and it made every thrust sharper. He gasped and pushed back harder, hungry for more, wanting to give Zack the perfect view of Ethan’s cock sliding in and out, slick and steady.

Ethan bottomed out, hips flush, their bodies pressed tight. He ground there, buried to the hilt, letting Zack catch every twitch of Jack’s hole clenching around him. Then he pulled almost all the way out, cock glistening in the dim light, before slamming back in with a wet slap.

Jack’s cry echoed off the tiles, muffled against his own arm. His voice was ragged, desperate, but laced with a grin.
“Fuck, bro—he’s seeing it all. You’re wrecking me in 4K.”

Ethan laughed, low and dirty, and kept up the deep strokes, the sound of skin and water carrying through the mist.
“Yeah, bro. Let him take notes. This is what real bros do.”


The steam curled thicker, wrapping them in their own little stage. Every thrust echoed in the wet slap of skin, Jack’s groans spilling out as Ethan drove deep. Jack angled himself lower, palms flat on the tile, ass arched just right so Zack couldn’t miss a thing.

Ethan grinned, sweat and water dripping off his jaw, and gave Jack a sharp smack on the ass. The sound cracked through the steam.
“Damn, bro. You’re putting on a show. Think our boy out there’s taking notes?”

Jack laughed through a ragged moan, pushing back harder on Ethan’s cock, grinding into the stretch. He twisted his head just enough to look at the vague shadow in the mist.
“Yeah, bro. Bet he’s strokin’ it right now. But—” he gasped as Ethan bottomed out, “—he doesn’t get this.”

Ethan leaned forward, mouth at Jack’s ear, but his voice was pitched to carry.
“Zack, bro. You like the view? You want in, huh?”

The shadow froze—caught, but not denying.

Jack smirked, hair plastered to his forehead with sweat and steam. He gave Ethan’s cock an extra squeeze with his ass, then shot a grin into the fog.
“Sorry, bro. Front row seats only. No backstage passes.”

Ethan laughed, fucking him harder, hips snapping wet and fast.
“Yeah. You can watch… but this ass? This cock? Off-limits.”

Jack moaned loud, letting his voice echo, his hole clenching down like it was performing too.
“Fuck—keep going, bro. Let him see how good it feels to get railed proper.”

The sound of Ethan’s body slamming into him, the wet grind of flesh, and Jack’s groans filled the shower, undeniable, inescapable. Zack was caught—frozen between shame and lust—but Jack and Ethan didn’t care. They were too busy making a show of each thrust, every kiss of skin on skin.

Ethan groaned into Jack’s ear, pumping him full, whispering so only Jack could hear:
“He’s never gonna forget this.”


Steam clung heavy to the tile, every breath a fogged-up gasp. Ethan slowed his rhythm, pulling almost all the way out, then sliding back in with deliberate grind, showing off the stretch, the deep press of cock into ass. Jack moaned on cue, fingers clawing at the slick wall, pushing his hips back like he wanted everyone in the room to see exactly how much he loved it.

A voice finally broke through the hiss of water—low, shaky, Zack’s.
“Fuck, bros… you’re so hot. I knew it. I knew you two were more than just gym partners.”

Ethan smirked, planting a wet kiss between Jack’s shoulders, then lifting his head, voice loud enough to carry.
“You hear that, Jack? We got ourselves a fan.”

Jack groaned theatrically, pushing back against Ethan’s cock, his voice tight with pleasure.
“Hell yeah, bro. Let him watch. Bet he wishes it was his ass getting split open right now.”

There was a beat of silence, then Zack’s voice again—rougher this time, more desperate.
“Yeah… yeah, I do. Watching you like this… it’s insane. You don’t even know what you’re doing to me.”

Ethan chuckled darkly, snapping his hips a little harder, the slap of their bodies echoing through the room.
“Oh, we know, bro. Every thrust, every moan—it’s for you. Don’t forget that.”

Jack tilted his head back, eyes half-lidded, mouth open as Ethan filled him. His smirk cut through the groans.
“Keep strokin’ out there, Zack. But that’s all you get. This is our game.”

Another groan carried from the mist, unmistakable.

Jack shivered at the sound, turning his head so Ethan could kiss him hard, tongues clashing while their cocks and bodies put on a show. When they broke, Jack panted out, voice husky:
“Damn, bro… we’re turning the showers into a porn set.”

Ethan bit at his ear, thrusting slow, deep.
“Yeah, and he’s paying the price of admission with his right hand.”

Jack laughed breathlessly, ass clenching around Ethan.
“Best fucking audience we’ve ever had."

The water kept pouring over them, but the real heat was coming from the air between the three of them. Ethan’s thrusts stayed measured, deep, like he wanted Zack to count every second his cock was inside Jack. Jack’s moans rose with each push, but his voice didn’t falter—he knew they were performing now.

“God, Ethan… every time you push in, I can feel my whole body just light up,” Jack groaned, twisting his head toward where he guessed Zack was standing. “Bet he’s hearing this and wishing he could feel it too.”

Ethan’s lips pressed hard against Jack’s neck, his breath hot and ragged.
“Yeah… his cock’s probably throbbing right now. Watching my dick disappear into you, stretching you open. He’d give anything to trade places.”

From the mist, Zack’s voice cracked, needy.
“Fuck… I would. You don’t know how hard I’m stroking right now.”

Jack moaned louder, his ass clenching around Ethan like he wanted to prove a point.
“You hear that, Ethan? He’s losing it. Just from watching your cock hammer me. We’re too much for him.”

Ethan growled, hips snapping faster, water splashing at their feet.
“Yeah, but I’m about to lose it too. Jack, you’re gripping me so tight… fuck, I can feel myself building.”

Jack gasped, throwing his head back, playing it up for Zack.
“Oh, bro… he’s about to cum in my ass. Can you picture it? His load shooting deep inside me while you’re out there, desperate, jerking your cock dry?”

The sound Zack made was half-moan, half-whimper.

Ethan slammed in hard, grinding against Jack, his voice rough in Jack’s ear but loud enough to carry.
“Yeah, Zack—watch close. Watch me fill him. This is what you don’t get.”

Jack shuddered, every muscle flexing around Ethan’s cock, his own moans ragged, soaking in both the penetration and the thrill of being watched.
“Fuck, bro… do it. Make him hear you cum inside me.”


Ethan’s thrusts turned feral, the slap of wet skin echoing through the tiled shower. His voice broke into a growl, guttural and raw.

“Ffffuck, Jack—” he slammed deep, hips locking against him, cock buried to the hilt—“I’m cumming.”

His body bucked, unloading thick, hot spurts deep inside Jack’s ass, each pulse wringing another shuddering groan out of him. Jack moaned for Zack’s benefit, back arching, muscles flexing to milk every drop.

“Oh god, Ethan—fuck, I can feel it. He’s filling me up, Zack… his cum’s flooding me right now.”

Zack couldn’t hold it anymore. From the steam a choked cry ripped out of him as his fist blurred, cock jerking in frantic strokes.
“Holy fuck—you two—oh my god—”

He spattered across the tile wall, ropes of cum painting down the slick surface while his breath tore out in shudders. He slumped against the tile, hand sticky, cock still twitching, unable to look away from Ethan still grinding into Jack’s cum-stuffed hole.

Ethan’s hands dug into Jack’s hips, riding out the last tremors, then he leaned over, panting into Jack’s ear.
“Guess we really gave him a show.”

Jack grinned, looking back toward Zack with a satisfied smirk, his cheeks flushed from more than the steam.
“Yeah, bro. And tomorrow? We might just make him beg for front row again.”


The steam was still thick, Ethan catching his breath, cum slowly slipping down Jack’s thigh. Jack wiped his mouth, eyes gleaming, and gave Ethan’s ass a sharp slap.

“My turn, bro,” Jack grinned, voice low and hungry. “Hope you’re ready to get stretched, ‘cause I’m still dripping full of you.”

Ethan smirked over his shoulder, bracing against the slick wall. “Fuck yeah, load me up, bro. Show Zack how you pound it.”

Jack lined up, his cock slick from the mix of water and Ethan’s cum leaking from his own ass. He pushed in with a groan, the glide messy and obscene. Ethan hissed, tightening, biting his lip as Jack sank deep.

Zack’s eyes went wide from his shadowed perch. He thought he’d seen everything—but watching one guy fuck another while still dripping cum from being filled himself? It short-circuited his brain. His breath hitched, hand already back on his cock without thinking.

Jack started to thrust, deliberate and slow at first, hips rolling as he leaned close to Ethan’s ear.
“Feel that, bro? That’s me giving it back. You put it in me, now I’m slamming it right back into you.”

Ethan’s laugh turned into a moan, muffled against the tile. “Ffffuck, yeah. Don’t hold back, bro. Let Zack see how we do.”

Jack’s pace built, balls slapping, cum streaking down his thighs as he drilled harder. He glanced toward the steam where Zack was half-hidden, and raised his voice just enough.
“You watching this, man? You seeing me rail your boy while still leaking his cum out my ass? Bet you never thought you’d get a free ticket to this show.”

Zack couldn’t help it—he groaned aloud, hand stroking faster, every nerve on fire. The sight was too much, too raw, too filthy.

Jack’s rhythm was relentless now—hips snapping forward, wet slaps echoing sharp against the steam-slick tile. His chest pressed to Ethan’s back, breath hot in his ear.

“Jesus, bro… so tight around me. I can still feel your cum dripping down my crack while I’m buried in you. It’s—fuck—it’s making me harder.”

Ethan groaned, fists braced against the wall, pushing his ass back to meet every thrust. “Yeah, Jack… yeah. You’re pounding me with my messy load still inside you. Feels dirty as hell and I’m eating it up. Give it to me, bro—show him what it does to you.”

Jack’s eyes flicked toward the steam, where Zack had stepped closer, unable to help himself. The outline of his hand pumping on his cock was obvious now. Jack snarled a laugh, hips grinding deeper.

“You seeing this, man? You seeing how he’s gripping me? How he’s begging for it? Fuck, just knowing you’re out there stroking it—makes me wanna bury my whole soul in him.”

Ethan twisted his head just enough to catch Jack’s mouth, their kiss wet, breathless, Jack still thrusting as they moaned into each other. Breaking away, Ethan shot a grin toward the steam.

“He’s right there, bro… watching every inch disappear inside me. You hearing the way I’m moaning for you? You hearing how wrecked I am?”

Jack growled, slamming in harder, grinding to make Ethan cry out. “Oh, he hears it. He’s never forgetting it. And fuck—it’s turning me into an animal.”

Zack couldn’t stay back any longer—he drifted closer to the shower stalls, water misting his bare chest, eyes locked in awe. His cock glistened in his fist, pumping desperately.

Jack caught the movement, grinned wolfishly, and shoved deep, holding Ethan stuffed full. “Look at him, bro. He’s losing it. Just being near us is getting me so fucking hot I could tear this place apart.”

Ethan, voice wrecked with need, moaned back, “Then do it, Jack. Split me open. Make him watch me take it all.”

Jack bared his teeth, thrusting harder, his voice thick with pleasure. “Oh, he’s gonna see it. Every drop. Every grind. Every time you clamp down and milk me. He’s seeing how you make me lose my mind.”


Jack lost it. His thrusts went from steady to feral—hips hammering, water splashing off both their bodies as the shower floor squeaked under the brutal rhythm.

“Fuck, Ethan—fuck—you’re choking my cock. Gonna blow in you, bro—gonna fucking flood you.”

Ethan’s voice cracked, his forehead pressed to the tile. “Do it—Jack, give it to me. Fill me up while he watches. Let him see how deep you own me.”

Jack snarled into his neck, biting down, rutting like he couldn’t stop. Every slap of his hips echoed sharp and wet, the sound of two bodies breaking themselves open in the steam.

Zack was right there now, only feet away, jerking his cock like his life depended on it, eyes wide at the mess unraveling in front of him. “Holy shit… holy fuck… you guys are unreal…” His voice cracked on the words.

Jack heard him, and it shoved him right over the edge. He drove in one last time and held, whole body seizing, cock buried to the hilt. A roar ripped out of him as he shot, hot pulses spilling inside Ethan, filling him until it leaked back out.

Ethan’s eyes rolled, body shuddering as the heat poured into him. “Jack—fuck, I feel it—oh fuck, I feel you stuffing me—” His own cock jerked and painted the wall in thick white streaks, his orgasm tearing through him at the same time.

Zack broke right then, groaning helplessly as his load spattered across the tile, body bent forward as if the sight had destroyed him.

Jack and Ethan collapsed into each other, shaking, lips colliding in a sloppy, breathless kiss. Cum still dripped between them, mixing with the water as Jack stayed buried in Ethan, grinding soft, lazy circles like he couldn’t bear to pull out.

Ethan finally looked toward Zack, a smirk curling through his wrecked expression.
“Guess you got your front-row seat, huh, bro?”

Jack laughed, raw and low, kissing Ethan’s shoulder. “Yeah. And he’s never getting that show out of his head.”


The locker room was quiet except for the hum of the fluorescent lights and the distant drip of a leaky pipe. Steam still clung to Jack and Ethan’s skin as they toweled off, trading lazy smirks like two guys who knew they’d just crossed another line and didn’t regret a second.

Zack stumbled in a minute later, hair damp from his rushed rinse, eyes wide like he’d seen a ghost—or more like he’d seen exactly what he had. He tried to act casual, but the flush creeping up his neck gave him away.

Ethan flicked his towel at Jack’s ass, then looked right at Zack.
“Bro. You look like you just ran a marathon. You good?”

Zack coughed, fumbling with his gym bag. “Y-yeah, man. Totally fine. Just, uh—pushed myself hard on curls.”

Jack snorted, pulling a clean shirt over his head. “Yeah, sure. That what we’re calling it now? ‘Curls’?” His grin stretched wide, sharp as a dare.

Ethan leaned against the bench, arms crossed, towel hanging low on his hips, water still dripping down his abs. “Not gonna lie, bro. Felt kinda good knowing you were out there.” He said it so casually, but the heat behind his eyes gave the game away.

Zack froze mid-motion, staring at the floor like it might swallow him. “I, uh… didn’t mean to, like—be a creep or anything. But, fuck, dudes… you two are—” His voice cracked. “—you’re like a fucking porn shoot in real life.”

Jack laughed, throwing an arm around Ethan’s shoulders. “Porn shoot, huh? Guess we did give you the good angles.” He winked, then dropped his voice to a low rumble. “Bet you’ll be thinking about that one for a while.”

Zack groaned, running a hand down his face. “Yeah, no shit. You guys broke my brain.”

Ethan smirked, clapping Zack’s shoulder like a coach giving encouragement. “Don’t sweat it, bro. Consider it a free show.” His grin widened. “But that’s all it is. Watching privileges only.”

Zack swallowed hard, nodding fast. “Yeah. Yeah, no, I get it. Just… thanks, I guess?”

Jack chuckled, tugging Ethan toward the exit. “C’mon, bro. Let’s grab a shake. Gotta refuel.”

As they left, Ethan shot Zack one last look over his shoulder, his smirk sharp as ever. “Better hit those curls extra hard next time. Sounds like you’ll need it.”

Zack sank onto the bench after they were gone, burying his face in his hands, muttering under his breath.

“Fuck me… I’m never living this down.


If you enjoyed this story, consider supporting the author on Wattpad.

To get in touch with the author, send them an email.


Report
What did you think of this story?
Share Story

In This Story