Bottas edged forward slightly at the start before bogging down, leading rival Sebastian Vettel to tell his Ferrari team that the Finn had jumped the lights.
However, he did not receive a penalty as he did not trigger the FIA detection system.
After dropping to an initial sixth place he recovered to second place behind Lewis Hamilton.
He was pushing Max Verstappen for second place when the team decided to pit him for fresh tyres with just over 20 laps to go in an attempt to find him extra pace.
He just failed to oust the Dutchman, crossing the line immediately behind him.
"It was a pretty bad race for me, to be honest," said Bottas. "Starting second obviously, you aim to win the race. I lost it at the start.
"I reacted to a light on my dash that went off, I don't know what it was, but something changed on my dash, so I reacted to that instead of the start lights, so I got anti-stall, so then I had to do the start again.
"I lost it there. No problem but obviously I lost many places, and made the race difficult for me. Fighting to the end, it was pretty close with Max, but still good points.
Bottas said the extra stop was worth doing.
"I think it was worth the gamble yes, I think it really gave me that difference in the tyre life. It didn't quite pay off today.
"I look forward to Silverstone, but plenty again to learn from this weekend."