Raikkonen held his pole position advantage at the start and controlled an uneventful opening phase of the race, with few changes to the order.
However, as the pit-stop phase arrived, Vettel ran a few laps longer, pumping in a series of rapid times to emerge just ahead of Raikkonen.
Vettel then surged clear over the second half of the race, before a scary incident involving Pascal Wehrlein and Jenson Button brought out the Safety Car.
However, most of the lead drivers opted against another stop, with Vettel going on to master the restart and claim his third win of the season.
It moves the four-time World Champion 25 points clear of Mercedes rival Lewis Hamilton, who recovered from 13th on the grid to seventh.
Ferrari, meanwhile, ended its victory drought around the streets of Monte-Carlo, stretching back to Michael Schumacher's triumph back in 2001.
As the lights went out, Raikkonen got away well and slotted ahead of Vettel into Sainte Devote, as Valtteri Bottas defended third from the Red Bull drivers, who banged wheels on the exit.
But there was little action after this, as 2017's wider cars yielded few overtaking manoeuvres around the Principality's tight, demanding streets.
Raikkonen built up a two-second lead over Vettel as the race developed, though this ebbed and flowed as the pair worked their way through traffic.
Raikkonen was the first of the Ferrari drivers to pit on lap 34, ditching his Ultra Softs for Super Softs, coming out behind the squabbling Button and Wehrlein.
Vettel stayed out five laps longer, clocking fastest lap after fastest lap to stretch his advantage above the elusive 20-second mark, which put him in the window.
Vettel's stunning sequence of laps, and a clean pit-stop, ensured that he rejoined the action ahead of Raikkonen, holding a lead that he would not relinquish.
Button and Wehrlein's race-long scrap at the back of the field ended in contact, the McLaren-Honda stand-in tipping the Sauber into the wall at an awkward, sideways angle.
Thankfully, both drivers escaped from the incident, with the initially trapped Wehrlein reporting over the radio that he was "OK" before freeing himself from his car.
Vettel, Raikkonen, Daniel Ricciardo and Bottas stayed out on track as the Safety Car was deployed, with Max Verstappen – who had a sufficient gap to the car behind – the only frontrunner to bolt on fresh tyres.
Vettel backed the pack up and surged clear at the restart, soon building another sizeable advantage over Raikkonen en-route to the chequered flag.
Behind the Ferraris, Ricciardo survived a brush with the wall at Sainte Devote to keep Bottas and team-mate Verstappen at bay for the final podium position.
Carlos Sainz Jr. converted his qualifying spot to come home sixth, resisting late pressure from Hamilton, who climbed up the order by going long on his initial set of tyres.
Romain Grosjean and Kevin Magnussen, the latter fighting back from a puncture, took Haas' first double points finish in Formula 1, split by Williams' Felipe Massa.