Media playback is not supported on this device
Hamilton was running second to Mercedes team-mate Nico Rosberg when the German ran into problems with his throttle early in the race and had to retire.
Ferrari's Sebastian Vettel took second to pass Rosberg in the title standings.
Force India's Sergio Perez was a fine third after Ferrari's Kimi Raikkonen dramatically collided with Williams' Valtteri Bottas on the final lap.
Hamilton's ninth win this season means he needs nine more points than Vettel and two more than Rosberg at the next race in the USA to clinch the title.
Raikkonen's eventual fifth place turned to eighth when he was given a 30-second time penalty after the race for causing the crash.
Media playback is not supported on this device
The result meant Mercedes claimed the Formula 1 constructors' title after securing enough of a difference in points from Hamilton's 25 for the win.
With Russian President Vladimir Putin watching from the stands, and later greeting the drivers before they went onto the podium, the second running of this race was a dramatic contrast to the soporific first last year.
Two safety car periods - the second following a high-speed crash for Lotus's Romain Grosjean in the long Turn Three - meant drivers went into the final part of the race on divergent tyre strategies.
The second safety car was introduced on lap 13, several laps before the window opened for the ideal pit stop on a one-stop strategy, but several teams decided to take the gamble of stopping for tyres and trying to make it to the end of the race.
At the head of them, Force India's Perez and Red Bull's Daniel Ricciardo went into the closing laps in third and fourth places, with the fresher-tyred cars of Bottas and Raikkonen closing them down.
Bottas stopped 13 laps after Perez and Raikkonen a massive 18.
Media playback is not supported on this device
The Williams driver found a way past Ricciardo on lap 45, with eight laps to go, and quickly closed onto Perez's tail, while Raikkonen passed the Red Bull three laps later and closed the three-second gap to the Force India and Mercedes.
Bottas was told by his team to go to "mode one" on his engine on the final two laps - the most powerful setting.
That enabled Bottas to pass Perez around the outside of Turn 13 on the penultimate lap, with Raikkonen following him through to demote the Mexican to fifth in the space of just two corners.
But the action was not finished - Raikkonen then tried an optimistic move on Bottas into Turn Four on the final lap and the two collided.
The Williams retired as a result of the damage from the accident but Raikkonen limped around the final lap with sparks cascading from the car to take fifth after being passed by Williams's Felipe Massa and give Ferrari just enough points to keep the constructors' championship open for one more race.
Ricciardo retired with what he said he thought was a suspension failure and his team-mate Daniil Kvyat took sixth at his home grand prix.
Sauber's Felipe Nasr was seventh ahead of Lotus's Pastor Maldonado, with Jenson Button and Fernando Alonso taking the final two points positions for McLaren.
The two McLaren drivers were on opposite tyre strategies and Alonso did a remarkable job on the occasion of his 250th grand prix meeting to nurse a set of super-softs for 39 laps after the Grosjean safety car period and spend most of the race on Button's tail.
But Alonso was given a five-second penalty for exceeding track limits, promoting Toro Rosso's Max Verstappen to 10th.
Although Rosberg is still mathematically in with a chance of the title, his manner after the race betrayed the reality that his hopes are over for another season.
Rosberg converted pole position into a lead on the first lap, fending off attacks from Hamilton into Turn Two and Turn Four, before the race was put under the safety car because of a multi-car collision at Turn Two caused by a spin for Force India's Nico Hulkenberg.
But his throttle began to play up during the safety car period and although he held on for two more laps after the restart on lap four, he ran wide at Turn Two at the start of lap seven and Hamilton was through into the lead.
Bottas and the Ferraris soon followed him through and Rosberg pulled in to the pits to retire at the end of the lap.
Rosberg said: "F1 is pretty incredible sometimes, how tough it is. Such bad luck after a day like this - great start, leading the race.
"During the safety car, the pedal broke and I couldn't come off the throttle any more."
Asked whether he considered his title hopes over, Rosberg said: "I don't know. It has made it more difficult of course. But I am never going to win it anyway with such normal things like that breaking.
"But of course I will keep pushing and keep attacking."
Full race results
Russian Grand Prix coverage details
Lewis Hamilton took an easy win in the Russian Grand Prix to move to the brink of his third world championship.