Fernando clean bowled openers Herschelle Gibbs and Andrew Hall to reduce South Africa to 45-2 after stand-in captain Ashwell Prince won the toss and elected to bat at the Sinhalese sports club on Thursday.
Jacques Rudolph and Hashim Amla prevented further setbacks to help the depleted Proteas reach 78-2 by lunch in good batting conditions.
Left-handed Rudolph, a late replacement for regular skipper Graeme Smith, was unbeaten on a fluent 29 with five boundaries. Amla was on nine at the break.
The tourists are without three top players. Smith and all-rounder Jacques Kallis stayed home because of injuries, while veteran Shaun Pollock opted out of the first Test due to the birth of his second child.
Pollock is expected to arrive here later on Thursday and will be available for the second Test of the short two-match series starting at the Sara stadium here on August 4.
Hall, who opened the batting after South Africa omitted Boeta Dippenaar to play a fifth bowler in Dale Steyn, made 17 in 52 minutes with three boundaries when he played over a ball from Fernando.
Gibbs, returing to the team after being dropped from the previous series against New Zealand due to poor form, plodded for 72 minutes for his 19 when he was beaten by a fast Fernando delivery.
Rudolph, who made 150 in the three-day tour opener earlier this week, cut Fernando for his first boundary and then drove the same bowler through the covers.
Off-spinner Muttiah Muralitharan, who came to bowl in the 15th over, has so far conceded just three runs in his six overs.
Sri Lanka omitted leg-spinner Malinga Bandara and went in with three seamers and a lone specialist spinner in Muralitharan.