Actions

Work Header

Rating:
Archive Warning:
Category:
Fandom:
Relationship:
Characters:
Additional Tags:
Language:
English
Stats:
Published:
2025-09-07
Words:
6,327
Chapters:
1/1
Comments:
15
Kudos:
376
Bookmarks:
46
Hits:
4,533

The heat and ingredients in the cupboard

Summary:

In the suffocating heat of the dungeons, a scathing encounter between James and Severus twists into something far more dangerous. Taunts turn to filthy promises, and against a storeroom ladder, hatred burns into desire neither of them can deny.

REWRITTEN

Work Text:

The heat in the dungeon had been building all week, the thick stone walls trapping the season’s first true wave of summer like a cruel oven. Severus shrugged out of his black robe with uncharacteristic impatience, though even then his precision showed: he draped it neatly over the back of a chair rather than let it puddle into a crumpled heap. His tie followed, tugged loose, buttons at his collar undone, his pale throat flashing briefly in the dim lamplight. Rolling his sleeves to his elbows, he felt air kiss his clammy skin, though it gave no relief. Sweat still slicked his chest beneath the thin white shirt, turning the fabric damp and clinging, nearly translucent at certain angles.

He ran a hand through his hair, gathering the heavy strands back into a knot at his nape. A few wisps escaped immediately, falling across his cheek, brushing his mouth. For once he didn’t bother to fix them. His mind was elsewhere—on the task Dumbledore had entrusted him with. A list of ingredients lay scrawled in his tidy, angular hand, weighed down by his battered copy of Advanced Potion-Making. Veritaserum. A brew so exacting that one slip rendered it worthless, and Dumbledore wanted it made in secret.

None of this surprised Severus. He had already begun his double game—feeding Dumbledore intelligence from Slytherin’s common room, tracking who bore the Dark Mark and which boys still whispered hungrily about earning it. He had no illusions about his own path: he intended to wear the Mark himself, to walk among them as one of their own, and then carry their secrets back to the headmaster. It was the only way he could think of to protect Lily Evans.

Even after she had turned from him, after the unforgivable word had cut the cord of their friendship, his love for her burned on like a star in his chest. If the Dark Lord triumphed, her blood would condemn her, and Severus would never allow her to fall unguarded. Better to damn himself in the shadows if it meant she might live.

He approached Slughorn’s storeroom, murmured Alohomora, and swung the door open—only to halt.

James Potter was inside, shirt gaping open, tie askew, a Ravenclaw girl wrapped around his waist as he devoured her throat with hungry kisses. The girl gave a shriek at Severus’ sudden appearance and bolted past him, face aflame.

Potter’s head whipped around, hair mussed, lips red and swollen. “Bloody hell, Snivellus!” he barked, anger and frustration lacing his voice. “You ruined it!”

Severus’ expression barely shifted. He didn’t flinch, didn’t sneer more than usual. He simply looked bored, voice carrying that dry venom that always made Potter bristle. “Potter.”

Of course Potter, who spent every spare breath chasing Lily, would sleep with someone and happily toss aside nameless girls. Severus knew Lily would never fall for him, and so the sight inspired not jealousy but disdain.

Severus walked past him without hesitation, climbing the storeroom ladder as if nothing had happened.

James’ indignation faltered. He’d expected a retort, an insult, some ugly gloating about Lily. Instead Snape ignored him, silent except for the soft creak of the ladder. And with every step, James’ eyes betrayed him.

Snape’s shirt clung obscenely in the heat, plastered to the sharp line of his back. The hem shifted as he climbed, exposing flashes of lean waist, the faint curve of his arse framed perfectly by damp black trousers. James’ mouth went dry. His cock gave a humiliating twitch that he tried to will away, but the sight rooted him in place.

James stood there, heart pounding in a rhythm that felt all wrong. His cock was hard, straining against his trousers, and the cause of it—Merlin help him—was Severus Snape. Snivellus. The greasy git he’d hexed a hundred times, the boy who scowled at him like poison incarnate, the rival who haunted every glance Lily spared. It didn’t make sense. It couldn’t. And yet his eyes refused to move, his body betraying him, drinking in Snape’s damp shirt plastered to pale skin, his hair tied back so carelessly it revealed the sharp line of his jaw.

What the fuck is wrong with me? James’ thoughts were a storm, hammering. This is Snape. This is the snake I’ve sworn to crush. He’s pathetic, cruel, and— His breath caught when Snape shifted, shirt pulling tighter over his chest, nipples dark against wet fabric. —and he’s fucking hot. Shit.

“Oi, are you stealing from Slughorn?” he blurted, voice louder than intended, trying to distract himself from the sudden twitch of his cock.

“I am not,” Severus snapped without looking down. “Dumbledore has given me leave to take what I require. And you won’t breathe a word to Slughorn if you value the headmaster’s regard.”

James narrowed his eyes, curiosity sharpened. “And why would Dumbledore keep that secret from Slughorn? What are you two plotting?”

Severus descended, hands empty, glaring up at James’ insufferably tall frame. “That is none of your business, Potter. If you’re desperate for answers, go grovel at the headmaster’s feet and pester him with your idiotic questions.”

James’ retort died on his tongue. Snape stood too close, damp shirt clinging to his chest, tie loose enough to show the long pale column of his throat. His hair, tied back, left his face exposed in a way James had never seen before. He looked… different. Not pitiful, not sneering—just alive, flushed, sweat-sheened.

“What’s wrong, Potter? Can’t finish a thought without gaping like an idiot?”

James bristled instantly, defensive against both Snape’s tone and his own treacherous arousal. “You think you’re clever, don’t you? Always running your mouth. Bet you get off on acting like you’re better than everyone.”

Severus smirked faintly, that cruel little twist of lips. “Better than you, certainly. The headmaster trusts me with things he wouldn’t dream of giving you. That must sting.”

Heat flared in James’ chest, half anger, half something else. He stepped closer without thinking. “Keep talking, Snivellus. Every word just makes me want to shut that smug mouth of yours.”

Severus arched a brow, cool and venomous. “Try it, Potter. You’ve never bested me in anything that actually matters.”

That mocking tone, that cutting superiority—combined with the sight of him flushed, sweat-slick, shirt clinging indecently—snapped James’ restraint clean in two. The war between disgust and lust in his chest imploded, and before he knew it, he’d shoved Severus against the wall, hands braced hard, breath ragged, pupils blown wide with fury and desire.

Severus’ shoulders slammed against cold stone, his breath rushing out in a startled hiss. His instinct was to sneer, to conjure some cutting remark, but the intensity in James’ eyes stole the words from his mouth. Hazel burned almost gold this close, pupils wide and dark, locked on him as if he were prey—or worse, something wanted.

“Get off me, Potter,” Severus snapped, but his voice lacked its usual bite. He could hear the faint waver, betraying that his chest was tight, his pulse hammering.

James leaned in closer, jaw tight as though fighting himself. “You don’t get it, do you? You stand there, acting untouchable, and you drive me fucking mad.”

Severus’ eyes narrowed, masking his unease with scorn. “Mad enough to pin me to a wall? You’re pathetic.”

James’ lips twisted, half snarl, half smirk. “Pathetic? You’ve got no idea what you’re doing to me.” His hand, meant to hold Severus still, slid lower without his permission, fingers grazing damp fabric at Severus’ waist.

Severus flinched at the touch but didn’t pull away fast enough. His mind screamed protest, yet his body betrayed him—heat coiling low, skin prickling where James’ fingers pressed. “You’re disgusting,” he hissed, but even that came out breathier than he’d meant.

“Am I?” James’ voice dropped, hoarse with something dangerous. “Because all I can think about is what it would be like to drag that shirt off you, to taste the sweat on your skin, to hear you—” he broke off, teeth clenching.

Severus froze. For one reckless heartbeat, the image James painted ignited in his head, unbidden, shameful. His lips parted, though no retort came.

James caught the flicker of shock and something else in his expression, and it undid him. He crowded closer, their chests almost flush, his breath hot against Severus’ ear. “Tell me I’m wrong. Tell me you don’t feel it. Otherwise, I swear I’ll make you moan for me right here.”

Severus’ heart pounded like it wanted to burst through his ribs. He hated Potter, despised everything he stood for—yet no one had ever wanted him like this, no one had ever pressed close, voice low and filthy, promising things that made his thighs tremble. His mouth opened, but the only sound that came was a choked, shameful whine.

James’ grin turned wicked at that sound. “That’s what I thought.” His hand slid bolder now, splaying across Severus’ hip, thumb teasing under damp fabric.

Severus stiffened, spine arched against the wall as if he could disappear into the stone. James’ hand at his hip burned through the thin fabric, every movement deliberate, circling lower, tugging at him as if testing how far he could push before Snape shattered.

“Potter—” Severus’ voice was sharp, meant to cut, but it trembled, betraying him.

James leaned his forehead against Severus’, hazel eyes wild, searching. “Merlin, you sound so fucking good when you’re flustered. All this time I thought you were made of ice, but right now—” his thumb skimmed the edge of Severus’ waistband, “—you’re burning up for me.”

“Lies,” Severus spat, but it was weak, barely more than a whisper.

James chuckled low, the sound vibrating in his chest. “Then why aren’t you pushing me off? You hex me every time I breathe near you, but now—” his lips brushed the shell of Severus’ ear, “—you’re shaking.”

Severus drew in a ragged breath, but when he tried to glare, his eyes betrayed him, wide and dark, uncertain. James’ grin deepened, feral and triumphant, and before Severus could turn away, James dipped and caught the corner of his jaw with his mouth.

It wasn’t a kiss—not yet. Just the scrape of lips along damp skin, lingering long enough to feel Severus’ pulse hammering. The Slytherin gasped, the sound high and broken, his fingers clutching at James’ sleeve as if to steady himself.

James pulled back just enough to see him—flushed, pupils blown, lips parted as though he couldn’t breathe. It was intoxicating. “You’ve been under my skin for years, Severus,” James admitted, voice low, roughened by want. “I used to think it was hate, but right now? I just want to ruin you.”

Severus swallowed hard, throat working visibly. “Y-you’re out of your mind.”

“Maybe.” James’ hand slid further, palm cupping the sharp angle of Severus’ hip, dragging him forward just enough that their bodies brushed. Their cocks pressed together through layers of fabric, and both of them sucked in a ragged breath at the friction.

Severus’ knees nearly buckled; his body screamed betrayal, heat surging low in his belly, while his mind shrieked enemy, enemy. But James was so close, his breath hot against Severus’ lips, his hand anchoring him in place, and for the first time Severus felt not despised, not mocked—but wanted.

James tilted his head, mouth a whisper away, teasing. “I’ll stop if you tell me to.” His tone was filthy, daring. “But you won’t. Because you’re curious. Because no one’s ever touched you like this. Because deep down, you want me to.”

Severus let out another choked whine, helpless and raw, the sound slipping free before he could smother it. His eyes fluttered shut, his head falling back against the wall in surrender.

James’ smile turned wolfish. “That’s it. Let me in, Sev.”

And then his lips crashed against Severus’, hungry and reckless, teeth and heat and desperation spilling out in a kiss neither of them had ever expected but both of them had been circling toward for years.

Their mouths met in a clash of teeth and breath, rougher than either intended, but neither pulled back. James pressed harder, tasting sweat and something sharp, like copper and adrenaline, the kiss messy and desperate. His hand tightened at Severus’ hip, dragging him closer until their bodies were flush, every line pressed together in unbearable heat.

Severus whimpered into the kiss, fists bunching in James’ open shirt. He wanted to shove him away, to curse him bloody—but his body betrayed him again, hips rolling forward just enough to feel James’ cock grinding back. The friction tore another gasp from his throat, swallowed by James’ hungry mouth.

“Fuck, Sev,” James groaned against his lips, voice ragged. “You’re driving me insane.” His tongue pushed deeper, demanding, tasting every inch of Severus’ mouth as if he had the right.

Severus twisted his head aside, breaking the kiss with a gasp. “You’re disgusting,” he panted, but his chest heaved against James’, his flushed face betraying how badly he needed air.

James smirked, lips dragging along Severus’ jaw, down the pale column of his throat. “You keep saying that,” he murmured, pressing open-mouthed kisses to skin gone hot and damp, “but your body doesn’t agree.” His teeth nipped lightly at Severus’ pulse point, and the Slytherin shuddered, a weak sound escaping him.

“Potter—ahh—stop this madness—” Severus’ voice broke when James’ free hand slid boldly upward, cupping his chest through the thin shirt, thumb brushing over a nipple already hard beneath the damp fabric.

Severus jerked, a strangled moan spilling out before he could stop it. His face burned scarlet, mortified. James only grinned wider, squeezing and teasing until Severus arched involuntarily into the touch.

“Merlin, you’re sensitive,” James breathed, licking at the sweat on his neck. “Tell me no one’s ever touched you here before.”

Severus bit down on his lip, refusing to answer, but his silence was answer enough. His lashes fluttered, eyes squeezed shut as his back bowed off the wall.

James’ cock throbbed painfully at the sight. He pressed harder against Severus’ thigh, grinding shamelessly. “You’re mine tonight,” he whispered, dirty and low. “I’ll make you feel so good you’ll forget your own bloody name.”

Severus let out a whimper, weak, broken, almost a plea. He hated himself for it, hated Potter more for coaxing it out of him—but at the same time, no one had ever made him feel this wanted. His heart hammered, his whole body trembling as if it might collapse beneath the weight of being desired.

James pulled back just enough to see his face, flushed and damp, lips swollen from kissing. “Say it,” he demanded softly, a predator’s grin curving his mouth. “Say you want me to keep going.”

Severus’ lips parted, trembling, but all that came out was a tiny, fractured, “P-please…”

James groaned, forehead dropping against his, his control snapping completely. “Fuck, Sev,” he growled, hands already tugging at damp fabric, desperate to strip, to touch, to prove every filthy promise he’d whispered.

James’ growl vibrated against Severus’ lips as his hands finally abandoned restraint. Fingers hooked into the hem of that soaked white shirt, dragging it upward in jerks, each tug making fabric cling before it peeled away from pale skin.

“Wait—” Severus gasped, hands catching James’ wrists, but it was a feeble defense. His own grip trembled, torn between pushing away and clinging harder.

“Don’t stop me now,” James muttered hotly, lips brushing Severus’ ear. “You’re burning up and I need to see you.” He shoved, and the shirt bunched beneath Severus’ arms, baring his chest in the lamplight.

Severus flinched, arms crossing instinctively over himself, face turned aside. The air was cool against his damp skin, nipples already hard and flushed pink, his chest rising and falling unevenly. “Don’t look,” he hissed, shame knotting his throat.

James caught his wrists, pinning them above his head against the wall. His eyes raked greedily downwards, lips parting with a sharp inhale. “Merlin’s balls… look at you. You’re gorgeous.”

Severus’ eyes snapped to his, furious and disbelieving, but James only grinned wolfishly, dipping his head to suck one pebbled nipple into his mouth.

“Nnghh—!” Severus jerked, a strangled cry spilling out before he could bite it back. His knees threatened to buckle as James’ tongue swirled, teeth grazing lightly before sucking hard enough to bruise.

James hummed against his chest, smug at the reaction, his free hand sliding lower, splaying wide over Severus’ stomach, then drifting boldly toward the bulge straining in his trousers. “Knew it,” he murmured against flushed skin. “You’re just as turned on as I am.”

“L-lies,” Severus rasped, but the evidence betrayed him, hot and hard under James’ palm. His hips twitched involuntarily into the touch, shame and hunger colliding in his veins.

James’ grip tightened, cupping him firmly, dragging a filthy groan from his throat. “Hear that?” James teased, his lips wet against Severus’ ear. “That’s your body begging me. Bet no one’s ever had you panting like this before.”

Severus shook his head violently, black hair clinging to his damp temples. “S-stop talking, you insufferable—ahh—” His insult dissolved into a moan as James squeezed harder, thumb pressing against his length through fabric.

“That’s more like it,” James whispered, every word a dirty caress. “You’re mine tonight. Say it, Sev. Say you want it.”

Severus writhed against the wall, torn between fury and unbearable want. His lip bled where he bit down too hard, trying to silence himself—but then James twisted his wrist just right, pressing and rubbing until his whole body arched helplessly into the touch.

“Y-yes,” Severus gasped, the admission ripped out of him like a curse. “Fuck, yes.”

James’ eyes gleamed with triumph. He crashed their mouths together again, one hand still grinding slow, relentless circles over Severus’ cock while the other pinned his wrists high, owning every inch of him.

James spun him and shoved, and Severus staggered forward with a startled cry. His palms caught the side of the ladder, clutching the rungs for balance, the wood rough beneath his trembling hands. His long body was bent forward just enough to expose the line of his back, the curve of his arse outlined shamelessly by damp black trousers.

James pressed in close behind, his chest flush to Severus’ back, cock grinding hard against him. His hands gripped Severus’ hips, steady and possessive, thumbs digging into damp fabric. “Merlin,” he breathed, voice husky with lust, “look at you. Holding on for me, bent just like I told you. You’re perfect like this.”

Severus’ breath hitched, his forehead lowering briefly to the cool wood. His whole body trembled with the tension of denial and need. “Th-this is madness,” he rasped, but his hips betrayed him, pressing back into James with a helpless twitch.

James’ grin turned wolfish. He kissed the nape of Severus’ neck, open-mouthed and filthy, teeth scraping over skin slick with sweat. “Madness?” he murmured, grinding harder so Severus could feel the full, aching length of his cock. “No. This is inevitable. You’ve been under my skin for years, Sev. And now you’re finally where I want you.”

“Y-you’re disgusting,” Severus whispered, though the words broke apart when James’ hand slid boldly around his waist and cupped him through his trousers, squeezing hard.

“Listen to you,” James groaned, lips at his ear. “Your mouth says no, but your cock’s so fucking hard for me.” He rubbed him slow and firm, drawing a sharp cry from Severus’ throat. “Bet no one’s ever touched you like this before. Bet you’ve never let anyone know how badly you want it.”

Severus’ knuckles whitened against the ladder, every muscle trembling, shame burning in his chest. “Nnnhh—d-damn you, Potter…”

James’ hand tightened, his voice dropping filthier, dirtier. “You’re mine tonight. I’m going to bend you right here, make you moan until your voice cracks. You’ll grip that ladder so tight, Sev, while I make you come undone.”

A broken whimper escaped Severus before he could swallow it, his head falling forward against the wood, heart pounding so hard it hurt. For the first time in his life, he wasn’t sneered at, wasn’t rejected—he was wanted. Desired so badly Potter shook with it.

“Say it,” James whispered, rutting against him slow and hard. “Say you want more. Or I’ll stop.”

Severus’ mouth worked, lips trembling, until finally—humiliating, needy—he gasped, “P-please…”

James groaned, grinding even harder, hands already tugging at his waistband with frantic, eager fingers. “That’s it, Sev. Hold on tight. I’m about to ruin you.”

James’ breath came ragged now, every nerve straining toward the moment he’d been aching for. His fingers worked at Severus’ waistband, tugging the button loose with a deft flick, then sliding the zipper down slow enough that the rasp of metal filled the silence.

He leaned in, lips brushing Severus’ ear, and whispered a quick cleaning charm over his entrance, making Severus jolt in shock at the sudden warmth blooming through him.

Severus shivered, pressing his forehead harder against the ladder, as though the wood could steady him. “N-no—Potter, don’t—” His voice was thin, weak, even as his hips arched back involuntarily into James’ touch.

“Oh, I’m going to,” James murmured, low and filthy against his ear. “You begged for it, Sev. Now I’m going to give it to you.”

The trousers slackened, sliding down narrow hips with James’ insistent tug. Damp fabric clung stubbornly at first, but then slipped free, pooling at Severus’ thighs and baring pale skin that almost glowed in the dim light. James groaned, a deep, hungry sound, his cock twitching painfully at the sight.

“Fuck, look at you,” James whispered, running a greedy hand over Severus’ arse, squeezing the firm curve, dragging his fingers across the heat of his skin. “Merlin, you’re perfect. I’ve wanted this from the second I saw you on that ladder.”
Severus’ breath hitched, knuckles white where he clutched the rungs. “Y-you’re vile…” he whispered, but the sound melted into a gasp when James’ hand slid lower, cupping him from behind, thumb teasing at the seam of his arse.

“Vile?” James smirked, lips brushing Severus’ damp hairline. “I’m about to make you moan my name until you forget your own. That doesn’t sound vile to me.” He pressed harder, circling with his thumb, feeling Severus shudder against him.

“Ahhh—P-Potter…” Severus’ knees buckled slightly, his grip on the ladder the only thing keeping him upright. Shame burned his cheeks, but want, hot and unbearable, curled deep in his belly.

James groaned at the sound, grinding his cock against Severus’ bare skin through his own trousers. “That’s it,” he growled, voice rough and desperate. “Hold on tight, Sev. I’m going to make good on every filthy promise I gave you.”

James’ breath was hot and ragged against Severus’ ear, every word dropping like molten lead into the Slytherin’s already fevered body. One hand splayed wide across Severus’ stomach to keep him pinned, the other slid lower, bold and unrelenting, until his fingers brushed the vulnerable heat of his arse.

Severus jerked, choking on a gasp. His whole body tensed, every instinct screaming to lash out—but his cock throbbed painfully, betraying him, pressing hard against the inside of his loosened trousers.

“Relax, Sev,” James whispered, voice low and coaxing but edged with hunger. “I’ll take care of you. I’ll make it good.”

“D-don’t—” Severus started, but his voice faltered into a shiver when James’ thumb pressed lightly against his entrance, circling slow, teasing the sensitive flesh.

“Merlin, you’re tight already,” James groaned, grinding against him lazily, cock aching. “Just imagine how you’ll feel when I’m inside you.”

Severus’ forehead pressed harder to the ladder, breath coming in shallow pants. “This is wrong… ohhh…” His denial broke into a moan as James leaned down, lips dragging across the damp skin of his back, biting lightly along the sharp ridge of his spine.

“Wrong’s never felt this good,” James muttered against him. He flicked his wand with his free hand, muttering a lubrication charm he’d used countless times alone in his bed. A slick warmth coated his fingers, and he spread it slowly, deliberately, across Severus’ tight hole.

Severus shuddered violently, knuckles white against the ladder rungs. “Potter! Don’t—ahh—” His protest collapsed when James pushed one finger in, breaching him with careful, steady pressure.

“Fuck, Sev,” James gasped, feeling the tight, scorching heat close around him. “You’re gripping me so hard already. Merlin, you’re going to ruin me.”

Severus whimpered, his body torn between clenching against the intrusion and pushing back for more. His thighs quivered, shame flooding him, but want drowned it out, buzzing hot under his skin.

James kissed the nape of his neck, soothing and filthy all at once. “Shhh, that’s it. You’re taking me so well. Just a little more.” He slid the finger deeper, then added a second, scissoring them slowly, stretching Severus open.

“Ahhh—f-fuck—!” Severus’ cry filled the storeroom, high and raw, echoing against the stone. His hips bucked helplessly, his cock throbbing against the edge of the ladder.

James groaned, teeth scraping Severus’ ear. “You hear yourself? You’re moaning for me, Sev. And I haven’t even given you my cock yet.” He crooked his fingers deliberately, hunting—and when he found the sweet spot, pressing hard against it, Severus screamed, his whole body jolting against the wood.

“J-James!” The name ripped from his throat before he could think, humiliating, electric.

James froze for a beat, then grinned like a wolf. “That’s it. Say it again.” He thrust his fingers deeper, rubbing mercilessly against Severus’ prostate.

Severus’ knees nearly gave way, his grip on the ladder all that held him upright. “Nnngh—James—ahhh—fuck!”

“Good boy,” James growled, pulling his fingers out slick and glistening, grinding his cock hard against Severus’ bare arse. “You’re ready for me. And now I’m going to bend you over this ladder and fuck you like I promised.”

James pulled his fingers free with a wet schlick, Severus’ body clenching instinctively around the sudden emptiness. The Slytherin sagged against the ladder, his chest heaving, arms trembling with the effort of keeping himself upright. He was flushed, damp, and so undone that James had to stop for a heartbeat, staring, cock throbbing at the sight of his rival wrecked and trembling.

“Merlin, Sev,” James rasped, dropping to his knees behind him. His hands spread across the pale cheeks of Severus’ arse, squeezing them apart, baring the slick, glistening hole he’d just stretched. “You’re beautiful down here. So fucking pretty.”

“P-Potter—what are you—don’t—” Severus’ voice cracked, half outrage, half fear, but his words cut off into a strangled gasp as James’ tongue pressed flat against his rim.

Severus jolted forward, nearly losing his grip on the ladder. “Ahhh—! Nnngh—f-fuck!”

James groaned into him, lapping slow and filthy, spreading him wider with firm hands as his tongue teased relentlessly at the tight ring of muscle. He licked in circles, then thrust forward, breaching him with wet heat. The taste was musky, overwhelming, and it only drove him wilder.

Severus’ head dropped, black hair falling into his face as he panted, utterly undone. “S-stop—ohhh—don’t—fuck—” His protests melted into breathless moans, his hips rocking back helplessly against James’ mouth.

James gripped tighter, holding him open, driving his tongue deeper. “Mmmm, that’s it,” he groaned into him, words muffled by wet flesh. “Ride my tongue, Sev. Let me taste all of you.”

“Ahhh—Merlin—James!” Severus screamed the name, his thighs shaking violently, cock leaking against the ladder rung he rubbed himself against without even realizing.

James pulled back only to spit on his hole, spreading the slick with his thumb before diving in again, tongue stabbing and swirling until Severus was whimpering like he might break apart. Every sound, every tremor, went straight to James’ cock, making him ache with the need to bury himself inside.

Finally, gasping, he dragged his mouth away, wiping his chin with the back of his hand. “You’re ready for me now,” he growled, standing and fumbling at his own trousers. His cock sprang free, hard, flushed, dripping. He lined it up, grinding the thick head against Severus’ wet, twitching hole.

Severus whimpered, forehead pressed to the ladder, body trembling uncontrollably. “N-no… James—please—I can’t—”

“You can,” James interrupted, voice hoarse with lust, his hands locking tight on Severus’ hips. “You’re going to take me, Sev. And it’s going to feel so good you’ll never forget it.”

He pushed forward slowly, the blunt head stretching Severus open. The Slytherin screamed, high and raw, clinging to the ladder as his body yielded inch by inch. James groaned at the tight, scorching heat wrapping around him, burying himself deeper until he was fully inside.

“Fuck—Merlin—so tight,” James gasped, forehead dropping to Severus’ damp back. “You’re gripping me like you were made for this.”

Severus whimpered, torn between pain and unbearable fullness, his cock leaking freely against the wood. “Ahhh—nnghh—James—”

James held still for a breathless moment, letting Severus adjust, then pulled back slowly before thrusting in again, harder this time. The ladder rattled with the impact, Severus crying out, his voice echoing in the storeroom.

“Hold on tight,” James growled, rutting into him with slow, deep strokes. “I told you I’d bend you over this ladder and ruin you—and I’m a man of my word.”

James sank in deep and stayed there, groaning as Severus clenched hot and tight around his cock. His hands tightened on Severus’ hips, fingers digging bruises into pale skin, but his thrusts slowed, shallow and deliberate.

“Merlin, Sev…” James’ voice was low, wrecked. “You feel fucking perfect. Like you were made for me.”

Severus trembled, forehead pressed to the ladder, sweat dripping from his hairline. “Ahhh—nnghh—Potter—” His voice cracked as James rolled his hips in small, relentless circles, the head of his cock dragging across Severus’ prostate just enough to make him choke on a cry.

James grinned against the damp skin of his shoulder, lips brushing it as he whispered, “What’s that? Can’t hear you.”

“Y-you bastard—ahhh!” Severus’ curse melted into another moan when James pulled back halfway and slid in again slow, stretching him, filling him until his knees shook. His cock throbbed untouched against the wood, smearing precome across the rung he clung to.

“Shhh, listen to yourself,” James crooned, his tone mocking but coaxing, filth laced with affection. He kissed along Severus’ neck, biting at the spot just below his ear. “Every time I move, you make the sweetest sounds. You like this, don’t you?”

Severus’ nails scraped against the ladder, his pride warring with the needy ache building low in his belly. “I—I hate you—” he tried, but his hips betrayed him, pushing back, greedy for more.

James chuckled, deep and smug. “You can hate me all you want, Sev. Just say the words.” He shifted, pulling almost all the way out before thrusting in just hard enough to make Severus cry out, then holding still again. “Beg me. Tell me you want it. Tell me you want me to fuck you properly.”

“Never,” Severus spat, but the word was broken, breathless. His whole body trembled, cock leaking, hole fluttering desperately around James’ thick cock still buried inside.

James groaned at the squeeze, his self-control fraying. He slid a hand from Severus’ hip to wrap around his cock, pumping slow, lazy strokes in time with his shallow thrusts. “Liar. Look at you, dripping for me. You’re already begging with your body.” He twisted his wrist, pressing his thumb hard against the head.

Severus cried out, his voice breaking high. “Ahhh—fuck—James—”

James grinned against his damp shoulder. “Say it again. Louder.” He squeezed tighter, giving him no relief, his hips rocking just enough to keep him on the edge. “Say you want me to pound you into this ladder until you can’t stand.”

Severus’ pride crumbled under the onslaught of sensation. His body arched back, grinding shamelessly into James’ cock, into his fist. His voice came out cracked, desperate, humiliating: “Please—James, please—I want it—fuck me—harder—”

James’ groan was guttural, raw triumph burning through him. “Good boy.” He kissed Severus’ damp neck, then pulled back, ready at last to deliver what he’d promised. “Hold on tight, Sev. I’m going to ruin you.”

James didn’t wait another heartbeat. He drew back almost to the tip and slammed in hard, the sound of flesh meeting flesh echoing against the stone walls. Severus cried out, his grip on the ladder rungs white-knuckled, body jolting forward with the force.

“Fuck yes,” James groaned, snapping his hips again, faster, harder, each thrust driving Severus against the wood until the ladder rattled under the assault. “So fucking tight—taking me so deep, Sev.”

Severus’ head dropped forward, black hair falling into his face as ragged moans spilled unchecked from his mouth. His cock ground helplessly against the rung, slick with precome, every hard thrust forcing him to rut against it like he couldn’t help himself.

“Ahhh—nnnghh—James!” he screamed when James angled his hips and hit that sweet spot dead on, white fire exploding behind his eyes. His knees buckled, and the only thing keeping him upright was his death grip on the ladder.

James grinned savagely, sweat dripping down his temples as he pounded harder, relentless. “That’s it—say my name, Sev. Let everyone know who’s making you scream.” His hand slammed back onto Severus’ hip, dragging him back to meet every brutal thrust.

“James—ahhh—Merlin—s-so deep—!” Severus’ voice cracked into a sob, tears pricking the corners of his eyes at the overwhelming pleasure. His whole body shook, trembling with every stroke that wrung another broken moan from his throat.

“You love this,” James growled, rutting into him harder, faster, the wet slap of skin obscene. “You love me bending you over this ladder and fucking you until you can’t think straight.” He leaned forward, lips brushing Severus’ ear, whispering filth between thrusts. “I can feel it—your hole’s clenching like it never wants to let me go.”

Severus whimpered, his pride shattered, hips rocking back to meet every punishing stroke. “Y-yes—ahhh—fuck—more—please—”

James nearly lost it at the sound of him begging, his pace turning brutal, pounding Severus so hard the ladder scraped against the flagstones. The rhythm was ruthless, deep, every thrust slamming into Severus’ prostate until the Slytherin screamed, voice breaking.

“Merlin, Sev,” James groaned, biting into the pale slope of his shoulder. “You’re mine—say it.”

“I—I’m yours!” Severus sobbed, the words ripped from him as his cock jerked, spurting helplessly against the ladder. His body clenched tight around James, milking him, dragging him over the edge.

James growled, thrusting a few more brutal times before burying himself deep, cock twitching as he spilled hot inside him. He groaned Severus’ name into his neck, holding him pinned and trembling until both of them collapsed forward against the ladder, sweaty and wrecked, still joined.

The storeroom was thick with the smell of sex and sweat.Both boys slumped against the ladder, foreheads damp, breaths ragged. Sweat trickled down Severus’ spine where James’ chest was still pressed against him, their bodies joined, twitching with the aftershocks of release. For a long stretch neither spoke, the only sound the faint drip of a potion vial somewhere in the cupboard.

At last, Severus shifted, trying to compose himself, reaching blindly for something steady in the wreckage of his thoughts. His voice, hoarse but steady, cut through the silence:

“Veritaserum…”

James blinked, still foggy, his glasses sliding crooked on his sweaty nose. He pulled them off, wiping the fogged lenses absently against his rumpled shirt. “What?”

“Veritaserum,” Severus repeated, forcing his tone to cool detachment even as his knees still trembled. He bent to snatch his discarded trousers, digging out his wand to clean himself with quick, practiced motions. “I’ve been a spy for the headmaster for quite a while now. He believes Slughorn is hiding something about the Dark Lord, so he asked me to brew it.”

James stilled, his sweat-damp shirt clinging to his chest, mind struggling to keep up. “You—you’re a spy?” He sat with the words, shock shifting into sharp interest. Then, decisively, “Give it to me after you’re done with it. I know a way to slip it into his drink and make him talk.”

Severus’ head snapped toward him, eyes sharp. “What?!”

James smirked, but there was an unusual steadiness in his voice. “Trust me on this.” He tugged his trousers back up, fingers fumbling at his buttons, then reached over and began fussing with Severus’ ruined shirt. His hands were unexpectedly gentle, tugging fabric into place, smoothing the mess he himself had made.

Severus stood frozen, too stunned to pull away. James finished his work, then leaned close, his expression softer than Severus had ever seen. “And then,” James said, voice lower now, intimate, “you’re going to explain to me why you’re risking everything being a spy.”

Severus swallowed hard, words failing him for once.

Before he could find any, James’ hand slipped to his waist, pulling him in with a slow, almost possessive tug. His lips brushed Severus’ cheek in a fleeting kiss, tender where moments ago they’d been ravenous.

“And maybe,” James whispered, a crooked grin flickering at his mouth, “we’ll have fun after that, love.”

Then he stepped back, adjusting his tie, sliding his glasses on, and left the cupboard with his usual swagger.

Severus stayed where he was, breathless, cheeks flushed, fingers brushing absently at the spot on his face that still burned from the kiss. His mind reeled—not just from the sex, not just from the Veritaserum, but from the bewildering tenderness that lingered after Potter had gone, leaving him undone in more ways than one.