Red Bull arrived at the Marina Bay Circuit with 14 victories from 14 rounds, but Sainz finally ended their crushing dominance with an impressive victory.
But Russell and Hamilton were unable to find a way past a resilient Norris in a dramatic conclusion with the former crashing out on the final lap. Russell's crash allowed Hamilton to complete the podium, with Charles Leclerc fourth.
Max Verstappen's record winning streak is also over after the Dutchman - who became the first driver in the sport's history to rack up 10 straight victories at the Italian Grand Prix a fortnight ago - finished fifth.
Verstappen's lead over Sergio Perez, who finished eighth, stands at 151 points, meaning the former cannot secure his third world title at next weekend's round in Japan.
Red Bull have ruled the F1 roost all year but the world champions have been desperately off-colour at this unique 3.07-mile high-downforce circuit in the city-state.
Red Bull's sudden malaise allowed for a shoot-out between Ferrari and Mercedes and McLaren's Norris become the first non-Red Bull winner of 2023.
After capturing his second pole in as many races, Sainz led from the start with team-mate Leclerc leapfrogging Russell off the line.
Hamilton suddenly found himself up two spots from fifth after he cut the chicane at the opening corner but the seven-time world champion was forced to give the places back to Russell in the other Mercedes and Norris.
With overtaking virtually impossible in Singapore, Sainz was able to control the pace by backing up the pack.
On lap 20, Logan Sargeant crashed into the wall, dislodging his front wing underneath his Williams. The American rookie limped back to the pits, but with pieces of debris littering the circuit, the safety car was deployed.
In came the leaders for fresh tyres, with Russell and Norris able to get the jump on Leclerc. Verstappen, having started 11th, was suddenly up to second, by virtue of staying out on old rubber. Perez, who also remained out, was fourth.
But when the race restarted on lap 23, both Verstappen and Perez were vulnerable with Russell wasting no time in passing Verstappen for second.
Norris and Hamilton gazumped Perez and then Verstappen with the Red Bulls falling down the order. Russell was then on Sainz's gearbox but unable to make an impression.
"I want to go for this win," Russell said. "We're on the same page," came the reply from the Mercedes pit wall.
And on lap 45, Mercedes rolled the strategical dice by pitting both Russell and Hamilton for fresh rubber when Esteban Ocon broke down in his Alpine and a Virtual Safety Car was deployed.
Russell, who dropped from second to fifth, left the pits 17.5 seconds behind Sainz, but on lap 53, he fought his way ahead of Leclerc - with Sainz eight seconds up the road.
Hamilton followed his team-mate through with the black-liveried Mercedes taking chunks of time out of Sainz and Norris.
With five laps remaining, Russell was crawling all over the back of Norris' McLaren, but he could not dislodge his countryman and then on lap 62 of 62 he dramatically put his Mercedes in the wall after clipping the barrier.
Sainz took the flag eight tenths clear of Norris, with Hamilton four tenths behind the McLaren driver.
Norris said: "We knew it would be tough after Mercedes stopped for tyres but we held them off. I hit the same wall as George, but he copied me and did it even worse. But I feel for him - he was the fastest driver today."
After taking his 196th podium, Hamilton said: "We rolled the dice this weekend. I felt like it was a two-stop strategy and the team did an amazing job to get us up there.
"It was unfortunate for George but we were pushing so hard to catch these guys."