Three-time Slam champion Osaka withstood early pressure from Williams to win 6-3 6-4.
Osaka is on a 20-match unbeaten streak and has never lost a Slam final.
The Japanese will face Jennifer Brady in Saturday’s final after the American beat Karolina Muchova.
Brady came past the Czech 6-4 3-6 6-4 to seal a spot in her first Grand Slam final.
It will be a rematch of the 2020 US Open semi-final, which Osaka came through in three sets.
“I was really nervous and scared in the beginning and then I sort of eased my way into it,” Osaka said of her match with Williams.
“It’s just always an honour to play her and I just didn’t want to go out really dud. I just wanted to try my best.”
It is the first time Williams has lost a semi-final at the Australian Open in eight appearances in the last four.
Williams will be left to rue the opportunities she let slip and once again wonder whether she will equal Margaret Court’s major record.
Osaka and Williams’ last meeting at a Grand Slam came at the US Open final in 2018 – a match remembered for Williams’ outburst at the umpire and Osaka’s tears at the presentation ceremony.
Since then, Osaka has won a further two major titles and risen to third in the world rankings, as well as finding more confidence and calmness on court.
It was Williams, with all her experience, who made the better start, breaking a nervous Osaka in the first game of the match before holding her own serve to take a 2-0 lead.
Although Osaka’s serve was not at its best, her power and increasingly comfortable movement allowed her to hit back, taking advantage of a dip in Williams’ game to win six of the final seven games and take the first set.
Williams’ own serve, such a big weapon in her game, did not fire, and she grew more frustrated as her big shots missed the mark and Osaka’s found the line.
The 10th seed yelled to herself to “make a shot” as she mixed easy errors with powerful winners to go an early break down, but it looked as though the match would shift when she broke back.
A tentative Osaka, serving for a 5-3 lead, was broken to 30, with the crowd cheering Williams on, but the Japanese showed tremendous grit to instantly fire back.
She broke Williams to love and then produced four huge first serves, including one ace, to wrap up the match in 75 minutes.
Source: BBC