The first 20 minutes were even with both sides having chances, Paul Shields going closest with a shot off a post. However, the Rose opened the scoring in 23 minutes when Shields was brought down by Ryan Dignan and Kevin McLeish shot home the penalty. McLeish then hit the post with a thundering free kick before Sean Grady latched on to a fine through pass from Kris Renton and sent the ball home to put the home side two up at the break.
The game was made safe after 77 minutes when Shields scored a fine goal. This finished the game as a contest but Chris Seeley had an excellent 30-yard effort saved by Andy Carlin before McLeish converted another penalty just before time after an incident that saw St Andrews defender Adam Porteous red-carded.
Bonnyrigg Rose: Carlin, McLeish, Stevie Thomson, Dunn, Woodburn, Burrell, King, Renton, Archibald, Grady, Shields. Subs: Roseburgh, Bunyan, S Thomson, Hendrie, sg: Burgess.
St Andrews United: Bennett, Cumming, Dignan, Hendrie, Porteous, Seeley, McMillan, McQuade, Patrick, Ramsay, MacRae. Subs: Hunter, Sutherland, Suttie, McInnes, sg: Sloan.