Work Text:
The first time Zoro noticed something was wrong, it was nothing more than a flicker in the air.
He was leaning against the rail of the Sunny after dinner, watching the sun drop into the ocean like it couldn’t get away fast enough, and Sanji had walked past behind him, muttering something under his breath. A cigarette was caught in the corner of his mouth, half-lit, a lazy curl of smoke trailing behind him as he descended toward the kitchen.
The scent should have followed him, like it always did. Spices and salt, tobacco and a sharp undertone Zoro would never admit he’d memorized, but this time? There was... nothing.
No, not nothing. There was something. But it was wrong. Flat, synthetic. Like someone had painted over the real Sanji with something artificial.
Zoro scowled, staring into the waves. He told himself it didn’t matter.
The second time, he was less charitable.
They were docked at a small island, a quiet recovery stop a few weeks after departing Wano. A sleepy town, no Marines in sight, decent booze. Luffy had declared a temporary vacation. Usopp and Chopper went off to climb something stupid. Nami was sunbathing and Robin was indulging in island tea culture. Zoro had retreated to the crow's best to train.
Sanji had come back from a supply run, where he went mostly to get the smokes of the brand he liked, as they didn't had it in Wano, sweating lightly from the sun, sleeves rolled to his elbows. His hair was windblown, and he was holding a bag of fresh herbs in one hand and around six packs of the smokes int he other. His scent, once Zoro got close, was coated in that same strange nothingness.
It made his stomach clench. Not from instinct. From wrongness.
“You reek,” Zoro grunted.
Sanji glanced at him, too fast. “It’s hot. It’s called sweat, marimo.”
“No,” Zoro muttered, low and irritable. “Not that. Your scent’s-” he stopped himself.
He wasn’t sure what line he was about to cross, but the look in Sanji’s eye said: Don’t.
“Drop dead,” Sanji said, shoving past him. “Go swing your sword at a tree, alpha freak.”
Zoro watched him go, heart pounding with something he didn’t name.
It got worse over the week.
Sanji stopped lingering. He stopped joining breakfast after making it, claiming he was just not hungry in the moments, he stopped minding when someone else offered to help him in the kitchen. He stayed inside when Zoro was above deck. The scent suppression, Zoro figured that’s what it was, coated him like armor. It hid him.
And the more Zoro noticed it, the more it ate at him.
He caught Sanji late one night in the kitchen, cleaning the counters in tired silence. Zoro hadn’t meant to interrupt. He was thirsty. That was it.
“Oi,” he said softly, nudging the door open.
Sanji turned, not flinching, but not smiling either. The usual spark in his eyes was dulled, eyes rimmed red. He looked exhausted. The scent in the room was sterile, like bleach and plastic.
Zoro stepped in. “What the hell are you taking?”
Sanji blinked. “Excuse me?”
“You’re doing something. Suppressants, maybe. They’re messing with your scent.”
A pause stretched between them. Zoro didn’t even know why he cared so much. Except he did. It was wrong.
Sanji turned away, clattering a bowl into the sink. “None of your business.”
“You smell like a damn hospital. It’s pissing me off.”
“And you think I want to smell like that?” Sanji’s voice cracked sharp as flint. He turned on Zoro, arms tight at his sides. “You think I’m doing this for fun?”
“I didn’t say...”
“You don’t get it,” Sanji snapped, voice low and dangerous. “You don’t know what it’s like to feel it coming on, knowing how strong it is, knowing you’re gonna lose it, gonna start begging, and the people around you are gonna smell it and know. You think I want that on the Sunny? With you?”
Zoro flinched. Just barely.
“...With me?” he echoed, voice quieter now.
Sanji breathed hard through his nose. His hands were trembling.
“I can’t afford it,” he muttered. “I can’t be weak here. Not like that. So yeah. I’m suppressing. It works. Doesn’t matter if it stinks.”
Zoro stared at him. At the too-clean scent. The fake calm. At the corner of Sanji’s mouth, where a trembling line of tension refused to go away.
“It does matter,” he said.
Sanji turned his back. “Get out of my kitchen, Zoro.”
And for once, Zoro did.
Sanji’s heat didn’t break like a wave. It cracked open slowly, like a fault line shifting under the skin.
He knew the signs. The ache behind his eyes. The subtle pull low in his belly. The way his breath came faster when someone brushed too close. It was early. Way too early. The suppressant dosage was supposed to last another week.
But something had changed.
He caught himself leaning too long in the kitchen heat, wrist pressed to his brow, heart stuttering in a way that had nothing to do with overwork. He snapped at Nami for no reason. Fumbled a pan. Nearly dropped a whole tray of raw fish.
When Robin entered the room, he felt her gaze on him before she said anything.
“You don’t seem yourself today, cook-san.”
Sanji smiled, too sharp. “Just tired my darling.”
She didn’t press, but she watched him too closely as she sipped her tea.
By dusk, the headache was unbearable. His skin felt tight. Hot. Too aware. Every footstep on deck made him twitch.
And when Zoro passed him in the hallway, close enough to brush shoulders, Sanji reeled.
The smell of him hit like a fist. Musk and metal and sweat from the training yard. His presence crowded the space. Sanji froze, spine straight, breath locked.
Zoro barely spared him a glance. His eyes flicked over Sanji’s face, and then they narrowed.
That look again, knowing, instinctive.
Sanji bolted.
He left a note for Chopper, “Taking a walk. Be back by morning.” and slipped into the tree line of the island just as the sun was starting to make his way down.
The forest was dense enough for cover. He found a dip in the hill, half-sheltered by a bent cypress, and started stacking loose branches. He needed shelter. Somewhere to wait it out. Somewhere no one would follow.
Except it was already too late.
The sweat came first, slicking down his neck, soaking his shirt, sticking his hair to his temples. He yanked off his jacket and dropped it into the grass. The wind scraped along his skin like a lover’s hand. Every sound made him jump.
By the time he tried to set the fire, his fingers were shaking.
He pressed his face into his elbow, panting. His scent was leaking out fast now, no suppressants left in his system. It rolled into the air thick and cloying, sharp-sweet and unmistakable.
Shit.
He bit his wrist to keep quiet. His glands were throbbing. His lower back burned with tension. His thighs clenched helplessly.
He wanted...
No. He couldn’t want anything right now.
A twig cracked behind him.
Sanji shot to his feet, staggering.
“Don’t,” he rasped. “Don’t come closer.”
But it was already too late.
Zoro stood at the edge of the clearing, chest rising slow and heavy, the moonlight catching in the sweat on his skin.
He smelled it. God, he smelled it.
He’d woken the second the wind shifted. Didn’t know what pulled him from his nap until the taste of Sanji’s scent hit the back of his throat like lightning. That scent, the real one. Not masked, not dulled, not suppressed.
Sharp, desperate.
It called to something in Zoro he had tried not to name for months now. It called for his alpha.
He found Sanji by instinct. He could’ve followed that scent for miles. He would have.
He stood still. Breathing carefully. Eyes locked on the omega across the clearing.
Sanji’s face was flushed. His hands were clenched at his sides. He looked both furious and humiliated.
“Go,” Sanji whispered. “Zoro. Just leave, please. I can handle it.”
Zoro didn’t move. The scent was everywhere. It clung to the trees, his mouth watered.
“You don't seem to be handling it,” he said.
“Fuck you.”
“You’re shaking.”
Sanji didn’t answer. His knees buckled slightly as he stood. The lean-to he’d tried to build was half-collapsed. There was no fire. No warmth. No plan.
He looked like he was falling apart.
Zoro stepped forward once.
Sanji flinched. “I mean it. Don’t touch me. If you touch me now…”
“I won’t do anything you don’t want,” Zoro said quietly.
Sanji’s lip curled. “You think that makes this better?”
Zoro’s voice dropped. “You think I want to watch you suffer like this?”
A long pause.
Sanji’s shoulders trembled. He turned away and pressed a fist to his mouth. “I didn’t want anyone to know. I thought I could hold it off.”
“You didn’t want me to know,” Zoro corrected.
Another pause. Sanji didn’t deny it.
“I’m not here to take advantage,” Zoro said. “Just... let me help.”
Sanji let out a bitter laugh, hoarse and broken. “What, you gonna carry me back to the ship in your arms like a princess?”
“No,” Zoro said. “I’m gonna keep you warm. Scent you until you stop shaking and stay here, if you want.”
Sanji turned slowly. His eyes were rimmed red, pupils blown. Sweat dripped from his jaw.
“You’re serious?” he said.
Zoro stepped closer, slow and measured. He held Sanji’s gaze as he closed the distance between them.
“If I touch you,” he said, voice low, “it’s only because I mean it. Not because of you heat, nor your scent, only because I want to." Sanji expression flickered… uncertainty, want, fear.
He didn't step back.
Zoro didn’t touch him right away.
He sat down beside Sanji in the patchy lean-to, their knees just barely brushing. The sun filtered through the canopy above, painting stripes of gold across the sweat on Sanji’s neck. He was breathing like he’d run a marathon. His skin radiated heat.
Zoro stayed close without crowding him, steady as a mountain.
Sanji trembled, arms wrapped tight around his middle, knuckles white. “You’re making it worse,” he said in a low voice. “Your scent... it’s too strong.”
Zoro said nothing at first. Then, quietly, “That’s not how this works.”
Sanji turned his face away. “Don’t start with that alpha-bonding instinct shit-”
“I’m not,” Zoro said, calm and even. “You’re in heat. Your body’s panicking. It’s trying to find something that feels safe.”
“Yeah?” Sanji spat. “And you think that’s you?”
Zoro didn’t flinch. “I know it is. You might not look at me as an alpha, but I'm still nakama. You know you're safe with me."
Sanji let out a sharp, bitter laugh, but it caught halfway and twisted into something more like a choke. His fingers dug into his arms, curled in against his ribs.
Zoro’s voice softened. “Just let me help you get through the worst of it.”
Sanji’s lashes fluttered, slow. His skin was flushed high on his cheeks, but there was no fight left in his limbs. Only exhaustion.
“You’re not gonna fuck me?”
“Not unless you ask,” Zoro said plainly. “Not unless you want me to.”
Sanji swallowed hard.
Silence fell like a blanket. The wind stirred the branches overhead.
“Fine.”
Barely a whisper. But permission.
Zoro moved slowly. He took off his swords, laying them beside him with reverence, and eased closer until his thigh pressed to Sanji’s. The heat rolling off him was wild, instinctive, overwhelming, but Zoro anchored himself to calm.
He slipped an arm around Sanji’s shoulders, careful, steady.
Sanji shuddered. “Zoro…”
“I got you curly.”
He pressed his face to Sanji’s temple and exhaled, deep and slow, letting his scent bleed out warm and low. Not dominance nor arousal, just his presence. That steady mix of sweat and steel and something deep like cedarwood.
Sanji let out a fractured sound. Like the first crack in a wall.
Zoro brushed his nose along Sanji’s temple, the soft spot under his ear, down to his scent gland. The omega’s body arched involuntarily, but Zoro didn’t press. He let the moment stretch.
“You smell like you again,” Zoro murmured. “Not all that chemical crap.”
Sanji’s fingers curled into Zoro’s shirt.
“I couldn’t stand it,” he said hoarsely. “When people look at me and smell it, that I’m not… that I’m not under control.”
Zoro pulled him closer, one hand splayed over Sanji’s spine. “It’s not weakness.”
“You don’t get it.”
Zoro leaned in. His lips brushed just behind Sanji’s ear. “I do.”
Sanji turned toward him slightly, not quite meeting his eyes, but close.
“I thought if you ever smelled it,” he whispered, “you’d laugh.”
Zoro blinked. “You thought I’d laugh?”
“You hate omegas.”
Zoro pulled back just enough to meet his gaze.
“I hate assholes,” he said. “And you just happen to be an omega and an asshole.”
Sanji snorted. “You’re such a bastard.”
“Yeah. But I’m the one here holding you together right now.”
Sanji opened his mouth to argue, but the words never came. He leaned in instead. Let himself press his cheek against Zoro’s shoulder.
Zoro wrapped both arms around him. Tight. Sure. Grounded.
Sanji breathed in deep, and this time, he didn’t choke on it, he just breathed.
The next hour passed in slow waves.
Zoro kept scenting him, murmuring nonsense between breaths. Letting his natural scent pool around them. Sanji’s heat was still burning under his skin, but he wasn’t shivering anymore.
Zoro’s fingers found his nape, rubbing slow circles. His thigh slotted between Sanji’s legs, not pushing, just resting.
Sanji let his head fall forward, pressing into Zoro’s throat.
“Why you...” he mumbled.
Zoro’s hand moved to cradle the back of his neck. “Because you trust me. Even if you’re too dumb to admit it.”
Sanji huffed against his skin. “I’m gonna punch you after this.”
“I’ll let you.”
Sanji’s lips brushed Zoro’s collarbone, heat and breath and accident. Or maybe not.
Zoro’s whole body went still.
Sanji didn’t look up.
“Still not asking,” he murmured.
Zoro smiled faintly into his hair.
The clearing felt warmer now, comfier. Zoro’s scent clung to the makeshift lean-to, it makes Sanji feels safe.
Sanji hadn’t spoken in a while. He just sat there, nestled against Zoro’s chest, arms looped around his waist like it was the only thing keeping him tethered. And maybe it was.
His body still burned. But the edge of panic had dulled. His hands weren’t shaking anymore.
Zoro hadn’t stopped touching him, not once. It wasn’t demanding, wasn’t greedy. Just the constant, grounding weight of strong hands rubbing at the base of his spine, through sweat-damp linen. The low rumble of his voice humming in Sanji’s ear. His scent, warm and spiced and anchored , curling into Sanji’s blood like a balm.
It helped. God , it helped.
Which is why it scared the shit out of him.
Zoro tilted his head a little, lips brushing the hair near Sanji’s temple. “Still with me?”
Sanji nodded without lifting his head. “Yeah.”
“You’re quiet.”
Sanji let out a breath. “Trying not to make a fool of myself.”
Zoro’s fingers traced lazy lines between his shoulder blades. “Think you passed that mark an hour ago.”
Sanji elbowed him, weakly. “Dick.”
But Zoro didn’t laugh. He exhaled slowly, pressing his cheek to Sanji’s hair.
“You know,” he said, almost gently, “you don’t have to fight me so hard.”
“I’m not fighting.”
Zoro gave him a look. “You always fight.”
Sanji didn’t answer. He swallowed and leaned in, forehead tucked under Zoro’s chin.
His voice was rough when it came out. “If I ask for it…”
Zoro went very still.
“…you won’t treat it like it doesn’t mean anything?”
Zoro’s arms tightened.
“No,” he said. “You know me better that that.”
Sanji’s breath hitched.
For a long second, the only sound was the wind in the trees, the flutter of leaves.
“I don’t want to be alone tonight,” Sanji said.
Zoro didn’t move. “You don’t want to be alone. Or you want me?”
Sanji looked up. His eyes were glassy, but sure.
“You. I want you.”
Zoro’s jaw clenched like he was holding something back.
Then he leaned down and kissed Sanji’s brow.
“Say it again,” he murmured.
Sanji licked his lips. “I want you.”
The omega shifted in his lap, thighs tight around Zoro’s, grinding down just enough for both of them to feel the friction.
“I want you to touch me.”
Zoro closed his eyes. He breathed out through it, the wave of arousal that surged at Sanji’s words, the scent that pulsed hotter around them now, heavy and slick and unmistakably open.
“Okay,” he said softly. “Then I will.”
Zoro eased them down together onto the nest of cloaks and scattered leaves. He kissed Sanji’s throat, then lower, unbuttoning him with hands steady from years of sword work.
Sanji arched into every touch. Heat hazed over his senses, but he kept his eyes open, watching Zoro like he couldn’t believe this was real.
When Zoro mouthed at his scent gland, Sanji moaned.
The sound shattered through both of them like a blade drawn free of its sheath.
Zoro bit his lip. “Tell me if I go too fast.”
Sanji’s hand slid into his hair, tugging. “Go faster, mosshead.”
Zoro smirked. “There’s the omega I know.”
Then he kissed him for real.
Zoro kissed him like he meant it, like he’d been starving for it and only just now let himself have it. Sanji opened to him without hesitation, lips parting, tongue brushing Zoro’s in slow, molten rhythm. The taste of him was all breath and want and something dark like the edge of blood, and it made Sanji’s toes curl.
The heat in his gut coiled tight.
When Zoro slid a hand up under his shirt, palm splaying over the curve of his waist, Sanji moaned again, low and broken, his body arching into the touch like it was the first real thing he’d felt all day.
“Fuck,” he breathed into Zoro’s mouth. “You’re so... warm.”
Zoro’s voice was wrecked. “You're burning up.”
“You’re making it worse,” Sanji growled, grinding up against the thigh pressed between his legs. “And better. Fuck, how? ”
Zoro nipped at his jaw. “Omega instincts are a bitch, huh?”
Sanji wanted to bite back, but then Zoro shifted, rolled on top of him fully, hips slotting between his thighs, and Sanji gasped , head falling back as slick bloomed between his legs, hot and obscene.
Zoro froze. He looked down, eyes blown wide.
Sanji flushed. “Shut up.”
Zoro didn’t laugh.
He leaned down, nuzzling Sanji’s throat. “You smell so fucking good. ”
Sanji’s breath caught.
Zoro’s hands pushed up his shirt, baring Sanji’s chest, and then he stared , like he was taking him in, every inch. His fingers traced scars, curves, the tremble in Sanji’s muscles.
“Still want this?” he asked, voice thick.
Sanji nodded hard. “Yes. Zoro, please...”
Zoro bent his head, lips catching a nipple, tongue swirling, and Sanji shook. His hands fisted in Zoro’s hair, tugging, his thighs falling open wider. He couldn’t stop the sounds spilling out of him, little gasps and mewls and curses in a dozen languages.
When Zoro slid lower, mouth leaving a trail down his stomach, Sanji keened.
“God… Zoro, if you make me beg-”
Zoro chuckled darkly. “You're already begging.”
Then his mouth found slick heat, and Sanji cried out, hips jerking up off the ground as Zoro licked into him. Broad, confident strokes of his tongue, fucking him open slow and deep.
Sanji’s vision whited out.
“Holy, fucking, shit.”
Zoro groaned into him, scent thick and electric.
Sanji was shaking now, one hand braced over his eyes, the other twisted in Zoro’s hair. He could feel every flick of tongue, every graze of teeth, like a live wire inside his chest. His thighs trembled around Zoro’s shoulders.
When fingers replaced tongue, two at first, then three, slow and patient. Sanji was already so slick and soft, they slid in easily. Zoro curled them just right, and Sanji sobbed, clutching at his biceps.
“ Zoro, I’m gonna... Fuck... I can’t…”
Zoro pulled back, kissed his thigh, whispered, “Not yet.”
He shucked his pants off, not bothering to hide the thick line of his cock, flushed and already leaking. Sanji’s eyes widened, pupils blown dark, mouth parted.
“Jesus.”
“You’ve got the mouth of a saint for someone about to get ruined.”
“Fucking try me.”
Zoro grinned.
He lined himself up carefully, pressing the blunt head of his cock to Sanji’s entrance, not pushing, just resting.
Sanji tensed.
Zoro’s thumb brushed his cheek. “I’ll stop if you say so.”
Sanji swallowed.
“Don’t you dare."
Zoro pushed in slow.
The stretch burned, slick easing the glide but not the ache, thick and full and so fucking deep. Sanji hissed through his teeth, eyes squeezed shut, gripping Zoro’s arms like a lifeline.
Zoro kissed his jaw. “You’re doing so fucking good.”
Sanji whimpered. “ Move.”
So Zoro moved.
Long, steady thrusts at first, slow enough to let Sanji feel every inch. Each time he bottomed out, Sanji gasped like he’d been punched, like the air had been knocked from his lungs.
Zoro set a rhythm, hips rolling with measured force, hands gripping Sanji’s waist.
The sound of slick, of skin, of moans, it filled the shelter, layered with the heavy scent of rut and want and Sanji’s open heat.
Sanji writhed beneath him, nails dragging down Zoro’s back.
“Harder,” he breathed. “Please… Zoro, I want it…”
Zoro snapped his hips, harder, deeper and Sanji screamed, head thrown back, every nerve singing.
Zoro buried his face in his neck. “You feel like fucking heaven, you know that?”
“Y-you’re such a goddamn… bastard.” Sanji sobbed, clinging to him.
Zoro shifted, one hand slipping down, fingers circling Sanji’s cock, already wet, already close. He stroked in time with each thrust, coaxing him toward the edge.
“Come for me,” Zoro murmured. “Let me feel it.”
Sanji’s whole body arched, and then he broke, coming with a cry that tore from his throat. Hot and thick over Zoro’s hand, his whole body trembling.
Zoro followed with a guttural groan, burying himself deep as he spilled inside, breath ragged, scent peaking and spilling over.
They stayed tangled, panting, trembling, chests pressed tight.
Eventually, Zoro slipped out carefully, wiped them down with Sanji’s crumpled shirt, and gathered him into his arms again.
Sanji curled against him like a storm finally spent.
Zoro kissed his temple.
“You’re mine,” he whispered.
And Sanji, soft and breathless, replied:
“I know.”
It was dark when Sanji got out of the heat fog that occupied his mind.
The ache in his bones had faded to something dull and warm. His head was pillowed against something solid, muscle, skin. He blinked blearily, vision swimming in shadows and firefly specks of starlight.
Zoro was still there. Still holding him.
The swordsman’s arms were a tight ring around his waist, one hand splayed at the base of his spine, thumb stroking small unconscious circles. He’d buried his face in Sanji’s shoulder sometime after everything, after the heat, after the sounds Sanji had made, after the things they didn’t say.
He was breathing deep and even, the steady drag of his chest against Sanji’s back comforting in a way that shouldn't have felt like home , but did.
Sanji swallowed.
“Are you awake?” he whispered.
Zoro grunted. “No.”
Sanji let out a laugh, shaky, too soft. “Then shut up and keep sleeping.”
They stayed like that for a while. Zoro didn’t pull away. He didn’t shift like he regretted it. His scent still wrapped around them both, stronger now, threaded through with something warmer. Claimed, chosen.
Sanji closed his eyes.
“You really meant it.” he said into the dark.
Zoro’s hand stilled.
“Yeah,” he said. No hesitation. No heat.
Just truth.
Sanji turned in his arms, facing him.
“You’re a fucking idiot,” he murmured.
Zoro huffed. “You gonna run now?”
Sanji pressed his forehead to Zoro’s. “I think I already ran out of places to go.”
Zoro’s fingers slid up to cup the back of his head. He pulled him in slowly, their mouths brushing, not a kiss this time, just a shared breath. A silent promise.
They didn’t speak again that night.
They didn’t have to.
