The hosts, who remain undefeated in the league this season, scored two in five minutes before the break to take control of a game which Dale had started the brighter.
Crewe added a third ten minutes after the break, but Dale rallied, with an own goal and an Aden Flint header pulling the deficit back to one.
It made for a frantic ending, but Ian Watson’s men couldn’t quite grab an equaliser.
Sam Waller replaced Nils Ramming in the only change from last weekend’s draw at Tranmere Rovers, after the on-loan stopper picked up an injury during that game.
Dale began the game well, controlling the majority of possession and looking the more threatening. Cian Hayes saw a couple of efforts blocked, one at the end of a lung-busting run from one end of the pitch to the other, before Aden Flint’s ambitious effort flew wide.
The hosts, though, created the better of the early chances. Matus Holicek saw a weak effort saved by the feet of Waller, before Josh March couldn’t make clean contact on a ball across the area, turning it well wide.
Kane Taylor came inches away from opening the scoring midway through the half, when his curling effort, after cutting inside from the right, went the wrong side of the far post.
Hayes saw another shot blocked, but two quickfire goals from the hosts gave Dale a mountain to climb.
Holicek netted the first, receiving the ball from a short corner and seeing a dipping effort find the top corner via a deflection.
The Railwaymen doubled their lead just a minute before the break, when Jordan Gibson had the simple task of turning into an empty net, after a low ball across goal had beaten the Dale defence and goalkeeper.
Watson’s men could feel hard done by to be two behind at the break, but that would extend to three just ten minutes into the second-half, despite another promising spell for Dale.
A break down the Crewe right led to a cross reaching Kyle Ure at the back post, with his scuffed shot falling fortuitously for Gibson, who slotted home from close range.
However, Dale weren’t for going down without a fight, and pulled a goal back midway through the second period.
The ball was worked out to Glenn Middleton on the left side, with his cross – aimed for substitute Mani Dieseruvwe – being deflected into the net via a defender.
Dale continued to see plenty of possession and controlled large spells of the remaining action, keeping the hosts well at bay, but without creating a whole host of chances.
There were a number of dangerous crosses that came to nothing, with Dieseruvwe seeing a header comfortably claimed.
Flint reduced the deficit to one in the 90th minute, powering a stooping header home from Middleton’s cross, to set up a frantic four minutes of stoppage time.
However, despite the backing of 949 Dale fans, Watson’s side couldn’t find the equaliser that, arguably, their play deserved, resulting in a first defeat for six games.
Crewe Alexandra XI | Booth, Billington ©, Ure (75’ Hutchinson), Offord, March, White (60’ Agius), Tabiner (75’ Thibaut), Stephenson, Gibson (75’ Dancey), Holicek (46’ Thomas), Lunt.
Unused subs | Lawlor, McNeill.
Scorers | 39’ Holicek, 44’ 55’ Gibson.
Dale XI | Waller, Tasker (63’ Beckwith), Wilson, Hayes (63’ Francis), Gilmour ©, Adebayo-Rowling, Adeeko (79’ Silcott-Duberry), Taylor, Brown (63’ Dieseruvwe), Flint, Middleton.
Unused subs | Spaven, Hannant, Sherring.
Scorers | 65’ Middleton, 90’ Flint.
Attendance | 6,080 (949 away).