The Mexican driver started the race third but leapfrogged the leaders during an action-packed race.
While Pérez won the sport’s showpiece for the first time, his teammate Max Verstappen finished third with Ferrari’s Carlos Sainz in second.
Ferrari’s Charles Leclerc had started on pole but finished his home race down in fourth after his team’s pit stop strategy allowed Red Bull to overtake the Monegasque driver.
It means Verstappen extends his lead over Leclerc at the top of the driver’s championship.
There was drama even before the race got underway, with a long rain delay pushing the start back by over an hour.
Leclerc finally led the field away and controlled the early stages of the damp race.
But it wasn’t to be for the Ferrari driver.
Leclerc found himself behind Pérez after stopping to switch to intermediate tires and then fell behind Verstappen and Sainz after a botched pit stop saw him drop to fourth.
Ferrari had tried to change its mind and told LeClerc to stay out instead, but it was too late with the driver already in the pit lane.
The safety car was back out after Mick Schumacher crashed heavily — the driver was unharmed — but the top positions remained unchanged on a track that is notoriously hard to overtake on.
‘Dream come true’
Despite Leclerc’s disappointment — and anger at times — an emotional Pérez was worthy of the win and celebrated in style as Red Bull left Monaco the happiest team.
“It’s a dream come true,” Pérez said. “After your home race it’s the most special race to win.”
After a two-week break, the season returns for a race in Baku, Azerbaijan, before drivers head to Montreal, Canada.