The 76th victory of the five times world champion’s career, and third of the season, sent the Briton seven points clear of Finnish team mate Valtteri Bottas after five of the 21 races.
Max Verstappen finished third for Honda-powered Red Bull with Ferrari’s Sebastian Vettel and Charles Leclerc, at a loss to rein in the Mercedes, crossing the line fourth and fifth respectively.
“This is history in the making to have five one-twos,” said Hamilton, who started second on the grid and has now won the last three Spanish Grands Prix and four in total.
“I’m very proud to be a part of that and proud of everyone’s hard work.”
Hamilton took an extra point for the fastest lap of the race, his first of the campaign, and was helped by a safety car deployment 20 laps from the end giving him a free second pitstop to change worn tyres.
The Briton now has 112 points to Bottas’s 105, with Verstappen third on 66. In the constructors’ championship, Mercedes lead Ferrari by 96.
Bottas had started on pole position as championship leader but made a slow getaway and lost out in a three-abreast rush to the first corner, with Hamilton on the inside and Vettel trying his chances on the outside before locking up and running wide.
“It was pretty tight but I lost it at the start, there was some strange behavior on the clutch - it was like biting, releasing, biting, releasing and I’ve not felt that before,” said Bottas.
Mercedes' Lewis Hamilton competes - Formula One F1 - Spanish Grand Prix - Circuit de Barcelona-Catalunya, Barcelona, Spain - May 12, 2019. (Photo: Reuters)
“As a team it’s incredible, the fifth one-two in a row is really good. I got some good points, every single point is going to count this year, so that’s good for sure but I’m just keen to find out why the start was so bad.”
Hamilton squeezed through while Vettel slightly locked up and damaged his tyres, with Bottas holding on to second place after a slight correction and Verstappen sweeping through from fourth on the grid to third.
The race was effectively decided there and then, with Hamilton pulling away unchallenged and lapping both Alfa Romeo’s Antonio Giovinazzi and Williams’ Robert Kubica after just 19 of the 66 laps.
The safety car bunched up the field again, creating some much-needed tension but Hamilton had everything under control at the re-start.
The Ferrari drivers had twice followed orders by then, swapping places as the Italian team tried in vain to come up with a strategy to close the gap.
Both Vettel and Leclerc also lost time in the first pitstops due to a cross-threading issue on the left rear wheel.
“We will never give up,” said team boss Mattia Binotto, whose team had dominated pre-season testing at the circuit but who were way off the Mercedes pace even with an upgraded engine brought forward by two races.
“We are disappointed for the race, disappointed for the performance in the weekend. Our hope was to deliver more. We brought some upgrades, aero and engine, and were expecting somehow to be in the fight but it has not been the case.”
The safety car was deployed after McLaren’s Lando Norris and Racing Point’s Lance Stroll tangled at the first corner and ended up stranded in the gravel. The stewards decided it was simply a racing incident.
Frenchman Pierre Gasly was sixth for Red Bull, with both the Haas cars finishing in the points - Kevin Magnussen in seventh and Romain Grosjean 10th and scoring for the first time this season.
The two Haas drivers provided some entertainment as they went side by side, with Grosjean making several track excursions.
Spaniard Carlos Sainz was eighth for McLaren and Daniil Kvyat ninth for Toro Rosso.