After winning the first three holes, Goosen, the reigning US Open champion and fourth seed overall, ran out of gas and made just one birdie the rest of the way.
DiMarco made four birdies in five holes from the 10th to take the lead. He closed it out with an up-and-down par at the 17th, where Goosen missed a short par putt.
Toms, the 14th seed, was runner-up to Tiger Woods in this event two years ago. DiMarco, the 16th seed, had never advanced past the third round before.
The final will be played over 36 holes on Sunday. Goosen and Poulter will play for third place over 18 holes.
In Saturday morning's quarter-finals, Goosen had displayed a superb short game to beat Australian Robert Allenby 4 and 3, while DiMarco defeated US Ryder Cup teammate Stewart Cink 2 and 1.
Toms got through with a 2 and 1 victory over Australian Adam Scott, while Poulter had earned his semi-final berth with a 3 and 1 victory over giant-killer Nick O'Hern - the man who ousted two-time defending champion Woods in the second round.
COLLATED SCORES(x denotes seeding within bracket):
SEMI-FINALS: Chris DiMarco (USA) bt Retief Goosen (RSA) 2 and 1, David Toms (USA) bt Ian Poulter (GBR) 3 and 2
QUARTER-FINALS: Bobby Jones bracket, Chris DiMarco (USA x4) bt Stewart Cink (USA x2) 2 and 1
BEN HOGAN BRACKET: Retief Goosen (RSA x1) bt Robert Allenby (AUS x11) 4 and 3
GARY PLAYER BRACKET: Ian Poulter (GBR x11) bt Nick O'Hern (AUS x8) 3 and 1
SAM SNEAD BRACKET: David Toms (USA x4) bt Adam Scott (AUS x3) 2 and 1.