And in first-half injury time Ronaldo had his third great opportunity - but this time Kahn kept out his shot from point-blank range.
Germany began the second half in exactly the way they had started the first - on the attack.
And after Jens Jeremies' header was blocked on the line by Edmilson, Oliver Neuville's thundering free-kick was brilliantly turned onto his own post by Brazil keeper Marcos.
But just when it looked like a close-fought contest could be going the distance, Ronaldo took centre stage.
And his earlier misses were forgotten as he struck twice in the space of 12 minutes to give the South Americans yet another world crown.
Germany: Kahn, Linke, Ramelow, Metzelder, Frings, Schneider,Jeremies (Asamoah 77), Hamann, Bode (Ziege 84), Neuville,Klose (Bierhoff 73).
Subs Not Used: Baumann, Bohme, Butt, Jancker, Kehl, Lehmann,Rehmer, Ricken.
Brazil: Marcos, Edmilson, Lucio, Roque Junior, Cafu, Kleberson,Gilberto, Carlos, Ronaldinho (Juninho Paulista 85), Rivaldo,Ronaldo (Denilson 90).
Subs Not Used: Belleti, Ceni, Dida, Edilson, Junior, Kaka,Luizao, Polga, Ricardinho, Vampeta.
Booked: Roque Junior.
Referee: Pierluigi Collina (Italy).